Переменная типа «предложение»
Назначение
Оператор декларирует наличие переменной типа «предложение» с указанным именем.
Переменная типа «предложение» позволяет ссылаться на предложения (STATEMENTS
) встроенного языка, которые нужно многократно выполнять в процессе работы программы, возможно, с различными значениями входных и выходных параметров.
Предложение предварительно подготавливается к исполнению с помощью оператора PREPARE
встроенного языка и затем может выполняться с различными значениями входных и выходных параметров с помощью оператора EXECUTE
встроенного языка.
Т.к. имя предложения должно быть известно прекомпилятору, когда он встречает директиву EXECUTE
, необходимо объявить переменную типа «предложение» до его обработки прекомпилятором. Неявно переменная типа «предложение» объявляется оператором PREPARE
.
Синтаксис
< переменная типа «предложение» >::= EXEC SQL DECLARE < имя предложения > STATEMENT; < имя предложения >::= < идентификатор > | < строковый литерал >
Описание
-
Оператор
DECLARE STATEMENT
декларативный, поэтому он может находиться вне блоков основного языка. -
Переменная типа «предложение» может быть использована в операторах
PREPARE
,EXECUTE
. -
Объявление переменной типа «предложение» не является обязательным, имя предложения неявно создается при исполнении оператора
PREPARE
. -
Предложение встроенного SQL не может быть предложением создания или исполнения хранимой процедуры. Для этого существуют специальные операторы встроенного SQL
CREATE PROCEDURE
,ALTER PROCEDURE
. -
Проверка семантики предложения производится только на этапе выполнения. Исключением является оператор
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) */ … }