Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Оператор установки дескриптора

Поиск
<set descriptor statement>::= SET DESCRIPTOR <descriptor name> <set descriptor information> <set descriptor information>::= <set count> (VALUE <item number> <set item information> [{<comma> <set item information>}...] <set count>::= COUNT <equals operator> <simple value specification 1> <set item information>::= <descriptor item name> <equals operator> <simple value specification 2> <simple target specification 1>::= <simple target specification> <simple target specification 2>::=<simple target specification> <item number>::= <simple value specification>

Комментарий:

Оператор SET DESCRIPTOR служит для заполнения элементов дескриптора с целью его использования в разделе USING. За одно выполнение оператора можно поместить значение в поле COUNT (число заполненных элементов), либо частично или полностью сформировать один элемент дескриптора.

17.5. Оператор подготовки

<prepare statement>::= PREPARE <SQL statement name> FROM <SQL statement variable> <SQL statement variable>::= <simple target specification> <preparable statement>::= <preparable SQL data statement> | <preparable SQL schema statement> | <preparable SQL transaction statement> | <preparable SQL session statement> | <preparable implementation-defined statement> <preparable SQL data statement>::= <delete statement: searched> | <dynamic single row select statement> | <insert statement> | <dynamic select statement> | <update statement: searched> | <preparable dynamic delete statement: positioned> | <preparable dynamic update statement: positioned> <preparable SQL schema statement>::= <SQL schema statement> <preparable SQL transaction statement>::= <SQL transaction statement> <preparable SQL session statement>::= <SQL session statement> <dynamic select statement>::= <cursor specification> <dynamic simple row select statement>::= <query specification> <SQL statement name>::= <statement name> | <extended statement name> <extended statement name>::= [scope option] <simple value specification> <cursor specification>::= <query expression> [<order by clause>] [<updatability clause>] <updatability clause>::= FOR { READ ONLY | UPDATE [ OF <column name list> ] } <query expression>::= <non-join query expression> | <joined table> <query specification>::= SELECT [<set quantifier>] <select list> <table expression> <set quantifier>::= DISTINCT | ALL

Комментарий:

Оператор PREPARE вызывает компиляцию и построение плана выполнения заданного в текстовой форме оператора SQL. После успешного выполнения оператора PREPARE с подготовленным оператором связывается указанное (литерально или косвенно) имя этого оператора, которое потом может быть использовано в операторах DESCRIBE, EXECUTE, OPEN CURSOR, ALLOCATE CURSOR и DEALLOCATE PREPARE. Эта связь сохраняется до явного выполнения оператора DEALLOCATE PREPARE.

Оператор отказа от подготовленного оператора

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

Комментарий:

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

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

<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.

Оператор выполнения подготовленного оператора

<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.

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

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

Комментарий:

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

Оператор объявления курсора над динамически подготовленным оператором выборки

<dynamic declare cursor>::= DECLARE <cursor name> [INSENSITIVE] [SCROLL] CURSOR FOR <statement name>

Комментарий:

Как определяется в новом стандарте, для всех операторов DECLARE CURSOR, курсоры фактически создаются при начале транзакции и уничтожаются при ее завершении. Заметим, что в этом операторе <cursor name> и <statement name> - прямо заданные идентификаторы.

17.11. Оператор определения курсора над динамически подготовленным оператором выборки

<allocate cursor statement>::= ALLOCATE <extended cursor name> [INSENSITIVE] [SCROLL] CURSOR FOR <extended statement name> <extended cursor name>::= (<scope option>] <simple value specification>

Комментарий:

Курсоры, определяемые с помощью оператора ALLOCATE CURSOR, фактически создаются при выполнении такого оператора и уничтожаются при выполнении оператора DEALLOCATE PREPARE или при завершении транзакции. В этом операторе имена курсора и подготовленного оператора SQL могут задаваться не только в литеральной форме, но и через переменные. <scope option> относится к области видимости имен: в пределах текущего модуля или в пределах текущей сессии.



Поделиться:


Последнее изменение этой страницы: 2016-06-06; просмотров: 197; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.207.196 (0.005 с.)