Приложение B. <Встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>)
(Это дополнение не является неотъемлемой частью стандарта.)
Функция
Специфицирует действия, предпринимаемые в случае возникновения исключительных ситуаций при выполнении <оператора SQL> (<SQL statement>).
Формат
<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>
Синтаксические правила
а) Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>) содержится в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>), то <цель> (<target>) в <операторе передачи управления> (<go to>) должна специфицировать <идентификатор основного языка> (<host identifier>), являющийся именем секции или именем параграфа без квалификатора.
b) Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>) содержится в <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>), то <цель> (<target>) в <операторе передачи управления> (<go to>) должна быть <целым числом без знака> (<unsigned integer>), которое является меткой выполнимого оператора, появляющегося в той же программной единице, что и <оператор передачи управления> (<go to>).
c) Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>)содержится в <программе на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>), то <цель> (<target>) в <операторе передачи управления> (<go to>) должна быть <целым числом без знака> (<unsigned integer>), являющимся меткой.
d) Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>) содержится в <программе на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>), то <цель> (<target>) в <операторе передачи управления> (<goto>) должна специфицировать <идентификатор основного языка> (<host identifier>), являющийся меткой константой или именем переменной типа метка.
<Встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>), содержащееся в <программе со встроенным SQL> (<embedded SQL host program>) применяется к <оператору SQL> (<SQL statement>), содержащемуся в <программе со встроенным SQL> (<embedded SQL host program>), тогда и только тогда, когда <оператор SQL> (<SQL statement>) появляется текстуально после этого <встроеннного объявления реакции на исключительную ситуацию> (<embedded exception declaration>) в тексте <программы со встроенным SQL> (<embedded SQL host program>) и нет другого <встроенного объявления реакции на исключительную ситуацию> (<embedded exception declaration>), которое специфицирует то же <условие> (<condition>) и появляется между этим <встроеннным объявлением реакции на исключительную ситуацию> (<embedded exception declaration>) и этим <оператором SQL> (<SQL statement>) в тексте <программы со встроенным SQL> (<embedded SQL host program>).
Если <встроенное объявление реакции на
исключительную ситуацию> (<embedded exception declaration>)
специфицирует <оператор передачи управления> (<go to>), то
<идентификатор основного языка> (<host identifier>) или
<целое число без знака> (<unsigned integer>), используемые в
<операторе передачи управления> (<go to>), должны быть такими,
чтобы оператор GOTO основного языка, специфицирующий этот <идентификатор
основного языка> (<host identifier>) или <целое число без
знака> (<unsigned integer>), был законным для каждого <оператора
SQL> (<SQL statement>), к которому применимо данное <встроенное
объявление реакции на исключительную ситуацию> (<embedded exception
declaration>).
Общие правила
Непосредственно после выполнения <оператора SQL> (<SQL statement>) в <программе со встроенным SQL> (<embedded SQL host program>):
а) Если значение переменной SQLCODE (SQLCOD) равно +100 и <программа со встроенным SQL> (<embedded SQL host program>) содержит <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>), которое применимо к <оператору SQL> (<SQL statement>), <условие> (<condition>) которого есть NOT FOUND и <действие по исключительной ситуации> (<exception action>) которого есть <оператор передачи управления> (<go to>), то выполняется оператор GOTO основного языка с указанным в данном <операторе передачи управления> (<go to>) <идентификатором основного языка> (<host identifier>) или <целым числом без знака> (<unsigned integer>).
b) Если значение переменной SQLCODE (SQLCOD> отрицательное число и <программа со встроенным SQL> (<embedded SQL host program>) содержит <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>), которое применимо к <оператору SQL> (<SQL statement>), <условие> (<condition>) которого SQLERROR и <действие по исключительной ситуации> (<exception action>) которого есть <оператор передачи управления> (<go to>), то выполняется оператор GOTO основного языка с указанным в данном <операторе передачи управления> (<go to>) <идентификатором основного языка> (<host identifier>) или <целым числом без знака> (<unsigned integer>).
c) Если <программа со встроенным SQL> (<embedded SQL host
program>) не содержит <встроенное объявление реакции на исключительную
ситуацию> (<embedded exception declaration>), которое применимо к
<оператору SQL> (<SQL statement>), или если она содержит
<встроенное объявление реакции на исключительную ситуацию>
(<embedded exception declaration>), которое применимо к <оператору
SQL> (<SQL statement>) и <условие> (<condition>)
которого CONTINUE, то никакие действия для этого <оператора SQL>
(<SQL statement>) не выполняются.
Приложение С. <Программа на языке Кобол со встроенным SQL> (<embedded SQL COBOL program>
(Это дополнение не является неотъемлемой частью стандарта.)
Функция
Специфицирует модуль SQL, встроенный в программу на языке
COBOL.
Формат
<embedded SQL COBOL program> ::=
См. Синтаксические правила.
<COBOL variable definition> ::=
{ 01 | 77 } < COBOL host identifier>
<COBOL type specification>
[<character> ...]
< COBOL host identifier> ::=
См. Cинтаксическое правило 3.
<COBOL type specification> ::=
<COBOL character type>
| <COBOL numeric type>
| <COBOL integer type>
<COBOL character type> ::=
PIC[TURE] [IS] X (<length>)
<COBOL numeric type> ::=
PIC[TURE] [IS]
S{ <nines> [V<nines>]
| <nines>V
| V<nines> }
[USAGE [IS]] DISPLAY SIGN LEADING SEPARATE
<COBOL integer type> ::=
PIC[TURE] [IS]
S<nines>
[USAGE [IS]] COMP[UTATIONAL]
<nines>::= { 9 [(<unsigned integer>)] }...
Синтаксические правила
<Программа на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>) - это прикладная программа, состоящая из текста на языке COBOL и текста на языке SQL. Текст на языке COBOL должен удовлетворять стандарту языка COBOL. Текст на языке SQL должен состоять из одного или более <встроенных операторов языка SQL> (<embedded SQL statement>) и, возможно, одной или более <встроенных секций описаний SQL> (<embedded SQL declare section>.
<Встроенный оператор SQL> (<embedded SQL statement>) в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>) может быть специфицирован везде, где может быть специфицирован оператор языка COBOL в разделе процедур (Procedure Division) <программы на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>). Если оператору языка COBOL может непосредственно предшествовать имя параграфа, то и <встроенному оператору языка SQL> (<embedded SQL statement>) может непосредственно предшествовать имя параграфа.
<Идентификатор языка COBOL> (<COBOL host identifier>) - это любое допустимое в языке COBOL имя переменной. <Идентификатор языка COBOL> (<COBOL host identifier>) должен содержаться в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>).
<Определение переменной языка COBOL> (<COBOL variable definition>) - это ограниченная форма описания данных в языке COBOL, определяющая переменную.
а) <Определение переменной языка COBOL> (<COBOL variable definition>) должно быть законным элементом описания данных в разделе данных (Data Division) программы, полученной из <программы на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>).
b) Необязательная последовательность <символов> (<character>) в <определении переменной языка COBOL> (<COBOL variable definition>) может специфицировать раздел VALUE. Могут ли быть специфицированы другие разделы - определяется реализацией. Последовательность <символов> (<character>) должна быть такой, чтобы <определение переменной языка COBOL> (<COBOL variable definition>) являлось допустимым элементом описания данных языка COBOL.
c) <Cимвольный тип данных языка COBOL> (<COBOL character type>) описывает переменную типа строка символов. Эквивалентный тип данных языка SQL - это тип CHARACTER такой же длины.
d) <Числовой тип данных языка COBOL> (<COBOL numeric type>) описывает переменную типа точных чисел. Эквивалентный тип данных языка SQL - это тип NUMERIC с теми же самыми значениями точности и масштаба.
e) <Целый тип данных языка COBOL> (<COBOL integer type>) описывает переменную типа точных чисел. Эквивалентный тип данных языка SQL - это тип INTEGER.
Замечание: этот тип данных поддерживается только для SQLCODE, см. Синтаксическое правило 5.
<Программа на языке COBOL со встроенным SQL>
(<embedded SQL COBOL program>) должна содержать переменную с именем
SQLCODE, определенную с типом данных COMPUTATIONAL picture S9(PC), где PC -
определяемое реализацией значение точности, специфицированное для параметров
SQLCODE в разделе 7.3, "<Процедура> (<procedure>).
Общие правила
См. Приложение A "<Программа со встроенным SQL> (<embedded SQL host program>)".
Приложение D. <Программа на языке Фортран со встроенным SQL> (<embedded SQL FORTRAN program>)
(Это дополнение не является неотъемлемой частью стандарта.)
Функция
Специфицирует модуль SQL, встроенный в программу на языке
FORTRAN.
Формат
<embedded SQL FORTRAN program> ::=
См. Синтаксические правила.
<FORTRAN variable definition> ::=
<FORTRAN type specification>
<FORTRAN host identifier>
[{,<FORTRAN host identifier>}...]
<FORTRAN host identifier> ::=
См. Синтаксическое правило 4.
<FORTRAN type specification> ::=
CHARACTER [*<length>]
| INTEGER
| REAL
| DOUBLE PRECISION
Синтаксические правила
<Программа на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>) - это прикладная программа, состоящая из текста на языке FORTRAN и текста на языке SQL. Текст на языке FORTRAN должен удовлетворять стандарту языка FORTRAN. Текст на языке SQL должен состоять из одного или более <встроенных операторов SQL> (<embedded SQL statement>) и, возможно, одной или более <встроенных секций описаний SQL> (<embedded SQL declare section>).
<Встроенный оператор SQL> (<embedded SQL statement>) может быть специфицирован везде, где может быть специфицирован оператор языка Фортран. <Встроенный оператор SQL> (<embedded SQL statement>), предшествующий какому-либо выполнимому оператору языка FORTRAN в содержащей <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>) не должен быть помечен номером оператора языка FORTRAN. В других случаях, если оператор языка FORTRAN может иметь номер, то и <встроенный оператор SQL> (<embedded SQL statement>) может иметь номер.
Пробелы существенны во <встроенных операторах SQL> (<embedded SQL statement>). Правила для <разделителей> (<separator>) во <встроенных операторах языка SQL> (<embedded SQL statement>) специфицируются в разделе 5.3, "<Лексемы> (<token>)".
<Идентификатор языка FORTRAN> (<FORTRAN host identifier>) - это любое допустимое имя переменной в языке FORTRAN. <Идентификатор языка FORTRAN> (<FORTRAN host identifier>) должен содержаться в <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>).
<Определение переменной языка FORTRAN> (<FORTRAN variable definition>) является ограниченной формой оператора описания типа языка FORTRAN, которая определяет переменную основного языка.
а) <Определение переменной языка FORTRAN> (<FORTRAN variable definition>) должно быть допустимым оператором описанием типа языка FORTRAN в программе, полученной из <программы на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>).
b) CHARACTER описывает переменную типа символьной строки. Эквивалентный тип данных языка SQL - это тип CHARACTER такой же длины.
c) INTEGER описывает переменную типа точного числа. Эквивалентный тип данных языка SQL - это тип INTEGER.
d) REAL описывает переменную типа приблизительного числа. Эквивалентный тип данных языка SQL - это тип REAL.
e) DOUBLE PRECISION описывает переменную типа приблизительного числа. Эквивалентный тип данных языка SQL - это тип DOUBLE PRECISION.
<Программа на языке FORTRAN со встроенным
SQL> (<embedded SQL FORTRAN program>) должна содержать переменную с
именем SQLCODE, определенную с типом данных INTEGER. В <программе на
языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>)
имя SQLCOD должно использоваться как сокращение SQLCODE.
Общие правила
См. Приложение A "<Программа со встроенным SQL> (<embedded SQL host program>)".
Приложение Е. <Программа на языке Паскаль со встроенным SQL> (<embedded SQL Pascal program>)
(Это дополнение не является неотъемлемой частью стандарта)
Функция
Специфицирует модуль SQL, встроенный в программу на языке
FORTRAN.
Формат
<embedded SQL Pascal program> ::=
См. Синтаксические правила.
<Pascal variable definition> ::=
<Pascal host identifier>
[{,<Pascal host identifier>}...]:
<Pascal type specification>
< Pascal host identifier> ::=
См. Синтаксическое правило 3.
<Pascal type specification> ::=
PACKED ARRAY <left bracket>
1..<length> <right bracket> OF CHAR
| INTEGER
| REAL
<left bracket> ::=[
<right bracket> ::=]
Синтаксические правила
<Программа на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>) - это прикладная программа, состоящая из текста на языке Pascal и текста на языке SQL. Текст на языке Pascal должен удовлетворять стандарту языка Pascal. Текст на языке SQL должен состоять из одного или более <встроенных операторов SQL> (<embedded SQL statement>) и, возможно, одной или более <встроенных секций описаний SQL> (<embedded SQL declare section>.
<Встроенный оператор SQL> (<embedded SQL statement>) может быть специфицирован везде, где может быть специфицирован оператор языка Pascal. <Встроенному оператору SQL> (<embedded SQL statement>) может предшествовать метка языка Pascal.
<Идентификатор языка Pascal> (<Pascal host identifier>) - это любой допустимый идентификатор переменной в языке Pascal. <Идентификатор языка Pascal> (<Pascal host identifier>) должен содержаться в <программе на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>).
<Определение переменной языка Pascal> (<Pascal variable definition>) определяет переменную основного языка.
а) <Определение переменной языка Pascal> (<Pascal variable definition>) должно быть допустимым в языке Pascal объявлением переменной в программе, полученной из <программы на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>).
b) PACKED ARRAY [1..<lenght>] OF CHAR описывает переменную типа символьной строки. Эквивалентный тип данных языка SQL - это тип CHARACTER такой же длины.
c) INTEGER описывает переменную типа точного числа. Эквивалентный тип данных языка SQL - это тип INTEGER.
d) REAL описывает переменную типа приблизительного числа. Эквивалентный тип данных языка SQL - это тип REAL.
<Программа на языке Pascal со встроенным SQL>
(<embedded SQL Pascal program>) должна содержать переменную с именем
SQLCODE, определенную с типом данных INTEGER.
Общие правила
См. Приложение A "<Программа со встроенным SQL> (<embedded SQL host program>)".
Приложение F. <Программа на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>)
(Это дополнение не является неотъемлемой частью стандарта.)
Функция
Специфицирует модуль SQL, встроенный в программу на языке PL/1.
<Программа на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>) - это прикладная программа, состоящая из текста на языке PL/1 и текста на языке SQL. Текст на языке PL/1 должен удовлетворять стандарту языка PL/1. Текст на языке SQL должен состоять из одного или более <встроенных операторов SQL> (<embedded SQL statement>) и, возможно, одной или более <встроенных секций описаний SQL> (<embedded SQL declare section>.
<Встроенный оператор SQL> (<embedded SQL statement>) может быть специфицирован везде, где может быть специфицирован оператор языка PL/1 внутри блока процедур. Если оператору PL/1 могла бы предшествовать метка, <встроенному оператору SQL> (<embedded SQL statement>) может непосредственно предшествовать метка.
<Идентификатор языка PL/1> (<PL/1 host identifier>) это любой допустимый идентификатор переменной в языке PL/1. <Идентификатор языка PL/1> (<PL/1 host identifier>) должен содержаться в <программе на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>).
<Определение переменной языка PL/1> (<PL/1 variable definition>) определяет одну или более переменных основного языка.
а) <Определение переменной языка PL/1> (<PL/1 variable definition>) должно быть допустимым в языке PL/1 объявлением данных в программе, полученной из <программы на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>).
b) <Определение переменной языка PL/1> (<PL/1 variable definition>) должно специфицировать скалярную переменную, а не массив или структуру.
c) Необязательная последовательность <символов> (<character>) в <определении переменной языка PL/1> (<PL/1 variable definition>) может специфицировать раздел INITIAL. Могут ли быть специфицированы другие предложения - определяется реализацией. Последовательность <символов> (<character>) должна быть такой, чтобы <определение переменной языка PL/1> (<PL/1 variable definition>) было законным оператором DECLARE языка ПЛ/1.
d) CHAR[ACTER] описывает переменную типа символьной строки. Эквивалентный тип данных языка SQL - это тип CHARACTER такой же длины.
e) FIXED DEC[IMAL] описывает переменную типа точного числа. <Масштаб> (<scale>) не должен быть больше <точности> (<precision>). Эквивалентный тип данных языка SQL - это тип DECIMAL с такими же <точностью> (<precision>) и <шкалой> (<scale>).
f) FLOAT BIN[ARY] описывает переменную типа приблизительного числа. Эквивалентный тип данных языка SQL - это тип FLOAT с такой же <точностью> (<precision>).
g) FIXED BIN[ARY] описывает переменную типа точного числа. Эквивалентный тип данных языка SQL - это тип INTEGER.
Замечание: Этот тип данных поддерживается только для SQLCODE; см. Синтаксическое правило 5.
<Программа на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>) должна содержать переменную с именем SQLCODE, определенную с типом данных FIXED BINARY(PP), где PP - определенная в реализации <точность> (<precision>), специфицированное для параметров SQLCODE в разделе 7.3 , "<Процедура>
(<procedure>)".
Общие правила См. Приложение A "<Программа со встроенным SQL> (<embedded SQL host program>)".