Переменная типа «предложение»

Назначение

Оператор декларирует наличие переменной типа «предложение» с указанным именем.

Переменная типа «предложение» позволяет ссылаться на предложения (STATEMENTS) встроенного языка, которые нужно многократно выполнять в процессе работы программы, возможно, с различными значениями входных и выходных параметров.

Предложение предварительно подготавливается к исполнению с помощью оператора PREPARE встроенного языка и затем может выполняться с различными значениями входных и выходных параметров с помощью оператора EXECUTE встроенного языка.

Т.к. имя предложения должно быть известно прекомпилятору, когда он встречает директиву EXECUTE, необходимо объявить переменную типа «предложение» до его обработки прекомпилятором. Неявно переменная типа «предложение» объявляется оператором PREPARE.

Синтаксис

 
< переменная типа «предложение» >::=
EXEC SQL DECLARE < имя предложения > STATEMENT;
< имя предложения >::= < идентификатор > | < строковый литерал >

Описание

  1. Оператор DECLARE STATEMENT декларативный, поэтому он может находиться вне блоков основного языка.

  2. Переменная типа «предложение» может быть использована в операторах PREPARE, EXECUTE.

  3. Объявление переменной типа «предложение» не является обязательным, имя предложения неявно создается при исполнении оператора PREPARE.

  4. Предложение встроенного SQL не может быть предложением создания или исполнения хранимой процедуры. Для этого существуют специальные операторы встроенного SQL CREATE PROCEDURE, ALTER PROCEDURE.

  5. Проверка семантики предложения производится только на этапе выполнения. Исключением является оператор CURRENT OF < имя курсора >, семантика которого проверяется при непосредственном задании предложения. Поэтому, если предложение задано с помощью конструкции < строка >|< главная переменная >, то оно не может содержать CURRENT OF < имя курсора >.

Примечание

< Имя предложения > неявно объявляется при использовании неименованного SQL-оператора в директиве прекомпилятора PREPARE. В некоторых случаях (директива CURSOR FOR) создается неименованное предложение (как правило, в тех случаях, когда к данному SQL-оператору необходимо обратиться только один раз).

Пример

EXEC SQL INCLUDE SQLCA; /* декларация предложения вне блока основного языка */
EXEC SQL DECLARE ST1 STATEMENT;
void f()
{
EXEC SQL DECLARE ST2 STATEMENT; /* имя предложения задано идентификатором встроенного языка (case insensitive) */
EXEC SQL DECLARE 'stmnt_bank' STATEMENT; /* имя предложения задано строковым литералом (case sensitive) */
…
}