Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Оператор установки дескриптораСодержание книги
Поиск на нашем сайте
Комментарий: Оператор 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 с.) |