Стандарты языка реляционных баз данных SQL: краткий обзор - Некоторые черты SQL/92. Часть 3

ОГЛАВЛЕНИЕ

4. 1. 6 Оператор отказа от подготовленного оператора

Синтаксис оператора следующий:

<deallocate prepared statement> ::=
DEALLOCATE PREPARE < SQL statement name>

Выполнение этого оператора приводит к тому, что ранее подготовленный оператор SQL, связанный с указанным именем оператора, ликвидируется, и, соответственно, имя оператора становится неопределенным. Если подготовленный оператор являлся оператором выборки, и к моменту выполнения оператора DEALLOCATE существовал открытый курсор, связанный с именем подготовленного оператора, то оператор DEALLOCATE возвращает код ошибки. Если же для подготовленного оператора выборки существовал неоткрытый курсор, образованный с помощью оператора ALLOCATE CURSOR, то этот курсор ликвидируется. Если курсор объявлялся оператором DECLARE CURSOR, то такой курсор переходит в состояние, существовавшее до выполнения оператора PREPARE. Если с курсором был связан подготовленный оператор (динамический DELETE или UPDATE), то для этих операторов выполняется неявный оператор DEALLOCATE.

4. 1. 7 Оператор запроса описания подготовленного оператора

Оператор определяется следующим синтаксисом:

<describe statement> ::=
<describe input statement>
| <describe output statement>
<describe input statement> ::=
DESCRIBE INPUT < SQL statement name>
<using descriptor>
<describe output statement> ::=
DESCRIBE [OUTPUT] < SQL statement name>
<using descriptor>
<using clause> ::=
<using arguments>
| <using descriptor>
<using arguments> ::=
{ USING | INTO }
<argument> [{<comma> <argument>}. . . ]
<argument> ::= <target specification>
<using descriptor> ::=
{ USING | INTO }
 SQL DESCRIPTOR <descriptor name>
<target specification> ::=
<parameter specification>
| <variable specification>
<parameter specification> ::=
<parameter name> [<indicator parameter>]
<indicator parameter> ::=
[INDICATOR] <parameter name>
<variable specification> ::=
<embedded variable name> [<indicator variable>]
<indicator variable> ::=
[INDICATOR] <embedded variable name>

При выполнении оператора DESCRIBE происходит заполнение указанного в операторе дескриптора информацией, описывающей либо результат ранее подготовленного оператора SQL (если это оператор выборки), либо количество и типы параметров подготовленного оператора. В <using descriptor> полагается писать USING SQL DESCRIPTOR.

4. 1. 8 Оператор выполнения подготовленного оператора

Синтаксис оператора следующий:

<execute statement> ::=
EXECUTE < SQL statement name>
[<result using clause>]
[<parameter using clause>]
<result using clause> ::= <using clause>
<parameter using clause> ::= <using clause>

Оператор EXECUTE может быть применен к любому ранее подготовленному оператору SQL, кроме <dynamic select statement>. Если это оператор <dynamic single row select statement>, то оператор EXECUTE должен содержать раздел <result using class> с ключевым словом INTO. В любом случае число фактических параметров, задаваемых через разделы using, должно соответствовать числу формальных параметров, определенных в подготовленном операторе SQL.

4. 1. 9 Оператор подготовки с немедленным выполнением

Синтаксис оператора:

<execute immediate statement> ::=
EXECUTE IMMEDIATE < SQL statement variable>

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