Системы обработки информации - язык баз данных SQL

         

Формат


<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 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>)] }...



Формат


<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



Формат


<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> ::=]



Формат


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



Функция


Специфицирует действия, предпринимаемые в случае возникновения исключительных ситуаций при выполнении <оператора SQL> (<SQL statement>).



Функция


Специфицирует модуль SQL, встроенный в программу на языке

COBOL.



Функция


Специфицирует модуль SQL, встроенный в программу на языке

FORTRAN.



Функция


Специфицирует модуль SQL, встроенный в программу на языке

FORTRAN.



Функция


Специфицирует модуль SQL, встроенный в программу на языке PL/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> (<embedded SQL host program>)".

Приложение D. <Программа на языке Фортран со встроенным SQL> (<embedded SQL FORTRAN program>)


(Это дополнение не является неотъемлемой частью стандарта.)



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


См. Приложение "<Программа со встроенным SQL> (<embedded SQL host program>)".

Приложение Е. <Программа на языке Паскаль со встроенным SQL> (<embedded SQL Pascal program>)


(Это дополнение не является неотъемлемой частью стандарта)



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


См. Приложение "<Программа со встроенным SQL> (<embedded SQL host program>)".

Приложение F. <Программа на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>)


(Это дополнение не является неотъемлемой частью стандарта.)



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



См. Приложение "<Программа со встроенным SQL> (<embedded SQL host program>)".

|



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



а) Если <встроенное объявление реакции на исключительную ситуацию> (<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>).



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


<Программа на языке 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.



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


<Программа на языке 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.



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


<Программа на языке 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.



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


<Программа на языке 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.