Реферат: Использование SQL в прикладном программировании

<SQL terminator> ::= END EXEC | ;

<embedded SQL declare section> ::=

<embedded SQL begin declare>

(<host variable definition>...]

<embedded SQL end declare>

<embedded SQL begin declare> ::=

<SQL prefix> BEGIN DECLARE SECTION [<SQL terminator>]

<embedded SQL end declare> ::=

<SQL prefix> END DECLARE SECTION [<SQL terminator>]

<embedded variable name> ::= :<host identifier>

<embedded exception declaration> ::=

WHENEVER <condition> <exception action>

<condition> ::= SQLERROR | NOT FOUND

<exception action> ::= CONTINUE | <go to>

<go to> ::= { GOTO | GO TO } <target>

<target> ::= :<host identifier> | <unsigned integer>

Встраиваемые операторы SQL, включая объявления курсора, а также разделы объявления исключительных ситуаций и переменных основной программы, должны быть окружены скобками EXEC SQL и END EXEC. Объявление курсора должно встречаться текстуально раньше любого оператора, ссылающегося на этот курсор. Все переменные основной программы, используемые во встроенных операторах SQL, должны быть объявлены в текстуально предшествующем этому оператору разделе объявления переменных основной программы. При этом синтаксис объявления переменной соответствует синтаксису основного языка программирования, но имени переменной предшествует двоеточие.

Механизм обработки исключительных ситуаций в SQL/89 исключительно прост (можно сказать, примитивен). Можно задавать реакцию на возникновение двух видов условий: SQLERROR - это условие появления в переменной SQLCODE после выполнения встроенного оператора отрицательного значения; NOT FOUND - условие появления в SQLCODE значения +100 (этот код означает исчерпание курсора). Реакция может состоять в выполнении безусловного перехода на метку основной программы (действие GO TO), или отсутствовать (действие CONTINUE). Срабатывает тот оператор определения реакции на исключительную ситуацию, который текстуально ближе от начала программы к данному оператору SQL.

Заметим, что во многих реализациях поддерживается два вида кодов ответа при выполнении операторов SQL (встроенных или взятых из модуля): через переменную SQLCODE с кодами ответа, представляемыми целыми числами и через переменную SQLSTATE с кодами ответа, кодируемыми десятичными числами, представленными в текстовой форме. Имеется тенденция к переходу на использование только механизма SQLSTATE, но в стандартных реализациях должен поддерживаться механизм SQLCODE.

2. Набор операторов манипулирования данными

В стандарте SQL/89 определен очень ограниченный набор операторов манипулирования данными. Их можно классифицировать на группы операторов, связанных с курсором; одиночных операторов манипулирования данными; и операторов завершения транзакции. Все эти операторы можно использовать как в модулях SQL, так и во встроенном SQL. Заметим, что в SQL/89 не определен набор операторов интерактивного SQL.

2.1. Операторы, связанные с курсором

Операторы этой группы объединяет то, что все они работают с некоторым курсором, объявление которого должно содержаться в том же модуле или программе со встроенным SQL.

Оператор объявления курсора

Синтаксис объявления курсора выглядит следующим образом:

<declare cursor> ::=

DECLARE <cursor name> CURSOR FOR <cursor specification>

<cursor specification> ::=

<query expression> [<order by clause>...]

<query expression> ::=

<query term>

К-во Просмотров: 256
Бесплатно скачать Реферат: Использование SQL в прикладном программировании