Приложение 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>

Синтаксические правила


  1. а) Если <встроенное объявление реакции на исключительную ситуацию> (<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>), являющийся меткой константой или именем переменной типа метка.
  2. <Встроенное объявление реакции на исключительную ситуацию> (<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>).
  3. Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>) специфицирует <оператор передачи управления> (<go to>), то <идентификатор основного языка> (<host identifier>) или <целое число без знака> (<unsigned integer>), используемые в <операторе передачи управления> (<go to>), должны быть такими, чтобы оператор GOTO основного языка, специфицирующий этот <идентификатор основного языка> (<host identifier>) или <целое число без знака> (<unsigned integer>), был законным для каждого <оператора SQL> (<SQL statement>), к которому применимо данное <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>).

Общие правила

  1. Непосредственно после выполнения <оператора 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>)] }...

Синтаксические правила

  1. <Программа на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>) - это прикладная программа, состоящая из текста на языке COBOL и текста на языке SQL. Текст на языке COBOL должен удовлетворять стандарту языка COBOL. Текст на языке SQL должен состоять из одного или более <встроенных операторов языка SQL> (<embedded SQL statement>) и, возможно, одной или более <встроенных секций описаний SQL> (<embedded SQL declare section>.
  2. <Встроенный оператор SQL> (<embedded SQL statement>) в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>) может быть специфицирован везде, где может быть специфицирован оператор языка COBOL в разделе процедур (Procedure Division) <программы на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>). Если оператору языка COBOL может непосредственно предшествовать имя параграфа, то и <встроенному оператору языка SQL> (<embedded SQL statement>) может непосредственно предшествовать имя параграфа.
  3. <Идентификатор языка COBOL> (<COBOL host identifier>) - это любое допустимое в языке COBOL имя переменной. <Идентификатор языка COBOL> (<COBOL host identifier>) должен содержаться в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>).
  4. <Определение переменной языка 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.
  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

Синтаксические правила

  1. <Программа на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>) - это прикладная программа, состоящая из текста на языке FORTRAN и текста на языке SQL. Текст на языке FORTRAN должен удовлетворять стандарту языка FORTRAN. Текст на языке SQL должен состоять из одного или более <встроенных операторов SQL> (<embedded SQL statement>) и, возможно, одной или более <встроенных секций описаний SQL> (<embedded SQL declare section>).
  2. <Встроенный оператор SQL> (<embedded SQL statement>) может быть специфицирован везде, где может быть специфицирован оператор языка Фортран. <Встроенный оператор SQL> (<embedded SQL statement>), предшествующий какому-либо выполнимому оператору языка FORTRAN в содержащей <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>) не должен быть помечен номером оператора языка FORTRAN. В других случаях, если оператор языка FORTRAN может иметь номер, то и <встроенный оператор SQL> (<embedded SQL statement>) может иметь номер.
  3. Пробелы существенны во <встроенных операторах SQL> (<embedded SQL statement>). Правила для <разделителей> (<separator>) во <встроенных операторах языка SQL> (<embedded SQL statement>) специфицируются в разделе 5.3, "<Лексемы> (<token>)".
  4. <Идентификатор языка FORTRAN> (<FORTRAN host identifier>) - это любое допустимое имя переменной в языке FORTRAN. <Идентификатор языка FORTRAN> (<FORTRAN host identifier>) должен содержаться в <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>).
  5. <Определение переменной языка 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.
  6. <Программа на языке 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> ::=]

Синтаксические правила

  1. <Программа на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>) - это прикладная программа, состоящая из текста на языке Pascal и текста на языке SQL. Текст на языке Pascal должен удовлетворять стандарту языка Pascal. Текст на языке SQL должен состоять из одного или более <встроенных операторов SQL> (<embedded SQL statement>) и, возможно, одной или более <встроенных секций описаний SQL> (<embedded SQL declare section>.
  2. <Встроенный оператор SQL> (<embedded SQL statement>) может быть специфицирован везде, где может быть специфицирован оператор языка Pascal. <Встроенному оператору SQL> (<embedded SQL statement>) может предшествовать метка языка Pascal.
  3. <Идентификатор языка Pascal> (<Pascal host identifier>) - это любой допустимый идентификатор переменной в языке Pascal. <Идентификатор языка Pascal> (<Pascal host identifier>) должен содержаться в <программе на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>).
  4. <Определение переменной языка 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.
  5. <Программа на языке 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.

Формат


     <embedded SQL PL/1 program> ::=

             См. Синтаксические правила.

     <PL/1 variable definition> ::=

            { DCL | DECLARE }

             { <PL/1 host identifier>

             | (<PL/1 host identifier>

               [{,<PL/1 host identifier> }...]) }

            <PL/1 type specification>

            [<character> ...];

      < PL/1 host identifier> ::=

            См. Синтаксическое правило 3.

      <PL/1 type specification> ::=

                CHAR[ACTER] (<lenght>)

              | { DEC[IMAL] FIXED | FIXED DEC[IMAL] }

                 (<precision> [,<scale>])

              | { BIN[ARY] FIXED | FIXED BIN[ARY] }

                 [(<precision>)]

              | { BIN[ARY] FLOAT | FLOAT BIN[ARY] }

                 (<precision>)

Синтаксические правила

  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>.
  2. <Встроенный оператор SQL> (<embedded SQL statement>) может быть специфицирован везде, где может быть специфицирован оператор языка PL/1 внутри блока процедур. Если оператору PL/1 могла бы предшествовать метка, <встроенному оператору SQL> (<embedded SQL statement>) может непосредственно предшествовать метка.
  3. <Идентификатор языка PL/1> (<PL/1 host identifier>) это любой допустимый идентификатор переменной в языке PL/1. <Идентификатор языка PL/1> (<PL/1 host identifier>) должен содержаться в <программе на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>).
  4. <Определение переменной языка 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.
  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>)".

Назад | Содержание