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


Динамический SQL


В ряде приложений возникает необходимость в динамическом формировании SQL-операторов по ходу выполнения программы. Этого могут потребовать:

  • интерактивные программы, в которых пользователь вводит данные и тем самым формирует запрос с терминала;
  • программы, предназначенные для работы с различными базами данных, структура которых может меняться.

С помощью динамического SQL программа-клиент выполняет программное формирование оператора SQL для его последующего исполнения, делая это в три этапа:

  • программа собирает текст оператора SQL в виде символьной строки, хранящейся в программной переменной; в общем случае это может быть не один, а несколько операторов SQL, разделенных точкой с запятой;
  • программа выполняет оператор Prepare, который обращается к серверу баз данных на предмет изучения текста оператора и подготовки его к выполнению;
  • программа использует оператор Execute для выполнения подготовленного оператора.

Подготовка операторов

Динамический оператор SQL по форме напоминает любой другой SQL-оператор, записанный в программе, с тем ограничением, что он не может содержать имена главных переменных. Поэтому

  • в динамический оператор Select нельзя включать спецификатор Into, в котором используются главные переменные;
  • в любом месте, где главная переменная могла бы появиться в выражении SQL-оператора, ей соответствует знак вопроса.

При формировании оператора Prepare можно воспользоваться как символьной строкой (либо функцией, возвращающей символьное значение), так и ранее определенной символьной переменной. Результатом выполнения оператора Prepare является структура данных, имеющая имя и отображающая строку символов с текстом оператора SQL.

В общем случае оператор Prepare не ограничивает символьную строку одним SQL-оператором и может содержать группу SQL-операторов, разделенных точкой с запятой.

Значения главных переменных, используемые при формировании SQL-оператора, могут быть получены из пользовательского ввода и присоединены к текстовой строке на этапе формирования SQL-оператора.


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



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