Язык программирования баз данных Informix-4GL


Динамический SQL - часть 2


В этом случае отпадает необходимость использования знака "?".

Указатели позиции "?" не могут быть использованы вместо идентификаторов SQL таких, как имя базы данных, имя таблицы или столбца: эти идентификаторы должны указываться в тексте оператора при его подготовке. Если эти идентификаторы не известны во время написания программы, они могут быть получены из пользовательского ввода, аналогично предыдущему примеру.

Замечаниe. Запрещенными для динамического формирования являются операторы, непосредственно связанные с динамическим SQL (Prepare, Execute), операторы управления курсором (Declare, Open, Fetch, ...), а также операторы работы на уровне базы данных (Create database, Database, ...).

Выполнение подготовленного SQL-оператора

Подготовленный по оператору Prepare динамический оператор (группу операторов) можно многократно выполнять. С помощью оператора Execute выполняются операторы, отличные от операторов Select, а также операторы Select, которые возвращают в качестве результата одну строку. Если оператор Select возвращает более одной строки, динамический оператор Select выполняется не с помощью оператора Execute, а подключается к курсору и в дальнейшем используется обычным образом с помощью курсорных средств. В обоих случаях при выполнении динамического оператора с помощью спецификатора Using ему передаются главные переменные, участвующие в выражениях и принимающие возвращаемые значения и, по сути, играющие роль фактических параметров .

Последний пример иллюстрирует случай использования курсора для выполнения динамически подготовленного оператора. Последовательность выполнения действий в примере:

  1. Символьная строка, задающая оператор Select, помещается в программную переменную. Она содержит два заполнителя, отмеченных знаком вопроса.
  2. Оператор PREPARE преобразует символьную строку в структуру данных с именем q_orders, которая может быть выполнена.
  3. Объявляется курсор с именем cu_orders и связывается с именем подготовленного оператора.



  4. Начало  Назад  Вперед



    Книжный магазин