Работа с базами данных


ДИНАМИЧЕСКИЙ SQL


ЛАБОРАТОРНАЯ РАБОТА 6

ДИНАМИЧЕСКИЙ SQL

Цель работы

Приобретение практических навыков работы со средствами динамического SQL при написании программ на ESQL/C.

Содержание работы и методические указания

к ее выполнению

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

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

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

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

Оператор Prepare создает структуру данных, имеющую имя и отображающую строку символов с текстом оператора SQL.

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




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



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