Стр. 1
 

112 страниц

730.00 ₽

Купить официальный бумажный документ с голограммой и синими печатями. подробнее

Официально распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль".

Наши цены ниже, чем в других местах, потому что мы работаем напрямую с поставщиками документов.

Способы доставки

  • Срочная курьерская доставка (1-3 дня)
  • Курьерская доставка (7 дней)
  • Самовывоз из московского офиса
  • Почта РФ

Определяет синтаксис и семантику двух языков, ориентированных на работу с базами данных (языков баз данных):

1) Язык описания схемы (SQL - DDL) для объявления структур и ограничений целостности базы данных SQL.

2) Модульный язык и язык манипулирования данными (SQL - DML) для объявления процедур работы с базами данных и выполняемых операторов специальной программы применения базы данных.

Настоящий стандарт опеределяет логические структуры данных и базовые операции для базы данных SQL. Он обеспечивает функциональные возможности для разработки, доступа, сохранения, управления и защиты базы данных.

Настоящий стандарт представляет средство обеспечения мобильности определения баз данных и прикладных программ между соответствующими реализациями.

Настоящий стандарт применяется для реализаций, существующих в среде, которая может включать в себя языки прикладных программ, языки запросов конечного пользователя, системы генерирования сообщений, системы словарей данных, системы библиотеки программ и системы распределенной связи, а также различные средства для создания баз данных, организации прохождения данных и оптимизации характеристик

Оглавление

1 Область применения

2 Ссылки

3 Определения

   3.1 Структура

   3.2 Нотация

   3.3 Условные обозначения

   3.4 Согласование

4 Понятия

   4.1 Множества

   4.2 Типы данных

   4.3 Столбцы

   4.4 Таблицы

   4.5 Ограничения целостности

   4.6 Схемы

   4.7 База данных

   4.8 Модули

   4.9 Процедуры

   4.10 Параметры

   4.11 Стандартные языки программирования

   4.12 Курсоры

   4.13 Операторы

   4.14 Встроенный синтаксис

   4.15 Привилегии

   4.16 Транзакции

5 Общая лексика

   5.1 

   5.2 

   5.3 

   5.4 

   5.5 

   5.6  и 

   5.7 

   5.8 

   5.9 

   5.10 

   5.11 

   5.12 

   5.13 

   5.14 

   5.15 

   5.16 

   5.17 

   5.18 

   5.19 

   5.20 

   5.21 

   5.22 

   5.23 

   5.24 

   5.25 

6 Язык определения схемы

   6.1 

   6.2 

   6.3 

   6.4 

   6.5 

   6.6 

   6.7 

   6.8 

   6.9 

   6.10 

7 Модульный язык

   7.1 

   7.2 

   7.3 

8 Язык манипулирования данными

   8.1 

   8.2 

   8.3 

   8.4 

   8.5 

   8.6 

   8.7 

   8.8 

   8.9 

   8.10 

   8.11 

   8.12 

9 Уровни

Приложение А. 

Приложение В. 

Приложение С. 

Приложение D. 

Приложение Е. 

Приложение F. 

Указатель

Страница 1

ГОСТ Р ИСО/МЭК 9075-93

государственный стандарт российской федерации

ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ

ЯЗЫК БАЗ ДАННЫХ SQL С РАСШИРЕНИЕМ ЦЕЛОСТНОСТИ

Издание официальное

БЗ 2—9.3/14(3


ГОССТАНДАРТ РОССИИ

Страница 2

ГОСТ Р ИСО/МЭК 9075-93

ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ

ЯЗЫК БАЗ ДАННЫХ SQL С РАСШИРЕНИЕМ ЦЕЛОСТНОСТИ

Издание официальное

МОСКВА- 1993

I

Страница 3

ГОСТ Р ИСО/МЭК 9075—93

Предисловие

1    РАЗРАБОТАН И ВНЕСЕН Техническим комитетом по стандартизации ТК22 «Информационная технология»

2    УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 08.07.93 № 169

Настоящий стандарт подготовлен на основе аутентичного тек* ста международного стандарта ИСО/МЭК 9075—89 «Системы обработки информации. Язык баз данных SQL с расширением целостности»

3    ВВЕДЕН ВПЕРВЫЕ

\

© Издательство стандартов, 199&

Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен без разрешения Госстандарта России

II

Страница 4

ГОСТ Р ИСО/МЭК «076-93

СОДЕРЖАНИЕ

Г '

1    Область применения..........

2    Ссылки........«    ‘    •    •    •

3    Определения............

3.1    Структура............

32 Нотация............

3.3    Условные обозначения.........

3.4    Согласование    .........

4    Понятия ............

4.1    Множества ....    *.......

4.2    Типы данных.......

4.3    Столбцы

4.4    Таблицы...........

4.5    Ограничения целостности........

4.6    Схемы.............

4.7    База данных...........

4.8    Модули ...........

4.9    Процедуры ...........

4.10    Параметры...........

4.11    Стандартные языки программирования .    .

4.12    Курсоры    .    .......

4.13    Операторы    .    .    ........

4.14    Встроенный синтаксис    .....

4.15    Привилегии...........

4.16    Транзакции.......•    .

5    Обшая лексика...........

5.1    < символ >..........

5.2    < литерал >..........

5.3. < лексема >............

5.4    <нмена>    •

5.5    <тип данных>    ..........

5.6    сспецифйкация    значения >    и    < спецификация    цели>

5.7    <спецификация столбца>.....*

5.8    < спецификация функции набора ;>.....

5.9    <выражение значения>    *    .....

5.10    <предикат>..........

5.11    <предикат сравнения>........

5.12    < предикат интервала >........

5.13    <предикат принадлежности>......

5.14    < предикат подобия >■........

5.15    < предикат нуля>.........

5.16    < квантифицированный предикат >.....

5.17 <предикат существования>    .    .    ,    .

5.18    < условие поиска >    .......

5.19    <табличное выражение^    ^    .

5.20    < спецификатор отображения >    .    .    .    \    .

5.21    сспецификатор выборки>......\ .'

5.22    <спецификатор группировки >....... .

5.23    <спецификатор выборки групп>......

5.24    < подзапрос>    ..........

.5.25 <спецификация запроса >.......

Ш

Страница 5

ГОСТ Р ИСО/МЭК 9075—93

6    Язык определения схемы .    .    .    .    .

6.1    <схема>..........

6.2    < определение таблицы > •......

6.3    < определение столбца >......

6.4    <спецификатор умолчания >    .....

6.5    <определение ограничений для    таблиц>

6.6    <определенне ограничения уникальности>

6.7    Сопределение ограничения на ссылки>

6.8    <определение ограничения проверки>

6.9    Сопределение представления>.....

6.10    <определение привилегий>    .    .    .    .    .

7    Модульный язык........

7.1    <модуль> .........

7.2    <спецификатор имени модуля >

7.3    < процедура >........

8    Язык манипулирования данными......

8.1    < оператор закрытия >.......

8.2    «Соператор блокировки>......

8.3    <объявление курсора>......

8.4    <оператор удаления: по положению>

8.5    < оператор удаления: поиск>.....

8.6    < оператор выборки >.......

8.7    < оператор вставки>

8.8    < оператор открытия >.......

8.9    < оператор отката >.......

8.10    < оператор выбора >    .    .

8.11    соператор корректировки: по положению>

8.12    Соператор корректировки: поиск>.....

9    Уровни ...........

Приложение А. <Встроенная общая программа SQL> Приложение В. С объявление встроенной особой ситуации > Приложение С. С программа встроенного SQL КОБОЛ > Приложение D. спрограмма встроенного SQL ФОРТРАН> Приложение Е. Спрограмма встроенного SQL ПАСКАЛЬ> Приложение F. Спрограмма встроенного SQL ПЛ/1>    .

Указатель ...........

\

\

IV

Страница 6

ГОСТ Р ИСО/МЭК 9075-9» ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Информационная технология

ЯЗЫК БАЗ ДАННЫХ SQL С РАСШИРЕНИЕМ ЦЕЛОСТНОСТИ

Information processing systems — Database Language SQL with Integrity Enhancement

Дата введения 1994—07—01

1 ОБЛАСТЬ ПРИМЕНЕНИЯ

Настоящий стандарт определяет синтаксис и семантику двух языков, ориентированных на работу с базами данных (языков баз данных):

1)    Язык описания схемы (SQL — DDL) для объявления структур и ограничений целостности базы данных SQL.

2)    Модульный язык и язык манипулирования данными (SQL — DML) для объявления процедур работы с базами данных и выполняемых операторов специальной программы применения базы; данных.

Настоящий стандарт определяет логические структуры данных и базовые операции для базы данных SQL. Он обеспечивает функциональные возможности для разработки, доступа, сохранения* управления и защиты базы данных.

Настоящий стандарт представляет средство обеспечения мобильности определения баз данных и прикладных программ между соответствующими реализациями.

Стандарт определяет два уровня и отдельно свойство расширение целостности. Уровень 2 — это полный язык базы данных аа исключением свойства расширения целостности. Уровень 1 — эт<> подмножество уровня 2, определенное в пункте 9 раздела «Уровни».

Примечание — Дополнительный язык SQL планируется & последующих дополнениях к этому стандарту. Основные темы, рассматриваемые в таких дополнениях, — это расширенная обработка транзакций, задание определенных правил, определяемых разработчиком, расширенные средства обработки символов и средства обеспечения множеств национальных символов. \

Издание официальное

Страница 7

ТОСТ Р ИСО/МЭК 9076-93

V1

Свойство расширения целостности представляет собой средство для задания:

1)    ограничения на обращения между таблицами, которые должны соблюдаться;

2)    проверочные ограничения, которые следует применять для строк таблицы;

3)    величина по умолчанию для столбца, когда строка вставляется в таблицу.

Приложения к этому стандарту определяют встроенный синтаксис для включения оператора языка манипулирования данными SQL в стандартную в других отношениях прикладную про-трамму. Такой встроенный синтаксис по определению является сокращенной записью для стандартной прикладной программы, в которой встроенные операторы SQL заменены в явной форме «вызовами» процедур базы данных, которые содержат оператор SQL.

Настоящий стандарт применяется для реализаций, существующих в среде, которая может включать в себя языки прикладных программ, языки запросов конечного пользователя, системы генерирования сообщений, системы словарей данных, системы библиотеки программ и системы распределенной связи, а также различные средства для создания баз данных, организации прохождения данных и оптимизации характеристик.

2 ссылки

ГОСТ 28141-89 Язык программирования ФОРТРАН (ISO 1539 Programming Languages — FORTRAN)

ГОСТ 22558-89 Язык программирования КОБОЛ (ISO 1989 Programming Languages — COBOL)

ISO 6160—79, Язык программирования ПЛ/1 1 (Programming Languages — PL/1)

ГОСТ 28140-89 Язык программиоования ПАСКАЛЬ (ISO 77185 Programming Languages — PASCAL)

3 ОПРЕДЕЛЕНИЯ

3.1 Структура

Структура настоящего стандарта следующая:    \

1) 3.2 «Нотация» и 3.3 «Условные обозначения» \ определяют «обозначения и условные обозначения в данном стандарте.

2

1

Данный документ может быть получен по запросу из ВНИИКИ Госстандарта России

Страница 8

ГОСТ Р ИСО/МЭК 9075—9S

2)    3.4 «Согласование» определяет критерии согласования.

3)    Раздел 4 «Понятия» определяют термины и представляет понятия, использованные в определении SQL.

4)    Раздел 5 «Общие элементы» определяет элементы языка, появляющиеся в нескольких частях языка SQL.

5)    Раздел 6 «Язык определения схемы» определяет способности SQL для задания базы данных.

6)    Раздел 7 «Модульный язык» определяет модули и процедуры.

7)    Раздел 8 «Язык манипулирования данными» определяет-операторы по управлению данными в SQL.

8)    Раздел 9 «Уровни» определяет оба уровня SQL и средства расширения целостности.

3.2 Нотация

В настоящем стандарте используется синтаксическая запись ЬНФ («нормальная форма Бэкуса», «форма Бэкуса — Наура») со следующими расширениями:

1)    прямоугольные скобки ([]) показывают необязательные элементы;

2)    многоточие (...) показывают элементы, которые могут повторяться один или более раз;

3)    фигурные скобки ({}) охватывают последовательности элементов.

В синтаксисе БНФ символ продукции <А> определен как ^содержащий» символ продукции <В>, если <В> занимает некое место в расширении <А>. Если <А> содержит <В>, то <В> «содержится» в <А>. Если <А> содержит <В>, то <А> является «содержащим» <А> символом продукции для <В>.

• 3-3 Условные обозначения

Синтаксические элементы настоящего стандарта определяют-ся с помощью понятия:

1)    Функции: краткое указание цели элемента.

2)    Формата: определение БНФ синтаксиса данного элемента.

3)    Синтаксических правил: дополнительные синтаксические ог

раничения, не выраженные в БНФ, которым должен удовлетворять данный элемент.    \

4)    Общим правилам: последовательное определение эффекта е ходе вычисления данного элемента.

В синтаксических правилах термин «должен» определяет условия, которые должны быть правильными для синтаксически под-

3

Страница 9

' ГОСТ Р ИСО/МЭК 9075-93

чиненного SQL языка. Обработка языка SQL, который не подчиняется форматам или синтаксическим правилам, определяется разработчиком.

В общих правилах термин «должен» определяет условия, которые проверяются во время прохода при выполнении оператора SQL. Если все такие условия истинны, то оператор успешно выполняется и устанавливается параметр SQLCODE (код SQL) в определенном неотрицательном числе. Если любое такое условие неправильно, то указание не выполняется успешным образом, выполнение указания не оказывает влияния на базу данных, и параметр SQLCODE приобретает заданное разработчиком отрицательное число.

Согласующая реализация не требуется для выполнения точной лоследовательности действий, определенных в Общих правилах, а будет оказывать такое же влияние на базу данных, что и эта последовательность. Термин «эффективно» используется в Общих правилах для подчеркивания действий, эффект от которых мог бы быть достигнут другими способами путем реализации.

Термин «устойчивый объект» используется для охарактеризо-вания. таких объектов, как <модуль>-ли и <схема>-мы, которые создаются и разрушаются с помощью определенных разработчиком механизмов!

3.4 Согласование

Настоящий стандарт определяет согласующий язык SQL и согласующие реализации SQL. Согласующий язык SQL будет твердо придерживаться формата БНФ и соответствующих синтаксических правил. Согласующая реализация SQL будет обрабатывать стандартный согласующий язык SQL в соответствии с Общими правилами.

Реализация, подтверждающая согласование SQL — DDL, будет обрабатывать SQL — DDL (<схема>) на уровне 1 или 2.

Реализация, подтверждающая согласование SQL — DML, будет проводить обработку на уровне 1 или 2:

1)    прямого вызова указаний языка управления данными SQL ;,<<оператор SQL>); и/или

2)    модульного, языка (<модуль>); и/или

3)    одного или более:

в) встроенного SQL КОБОЛ (<встроенная программа

SQL КОБОЛ»

b)    встроенного SQL ФОРТРАН (<встроенная программа

SQL ФОРТРАН >)

c)    встроенного SQL ПАСКАЛЬ (<встроенная программа

SQL ПАСКАЛЬ»

*4

Страница 10

ГОСТ Р ИСО/МЭК 9076—93S

d) встроенного SQL ПЛ/1 (<встроенная программа

SQL ПЛ/1».

Реализация, подтверждающая полное согласование SQL, будет обеспечивать либо на уровне 1, либо на уровне 2 согласованиям SQL — DDL и SQL — DML.

Согласующая реализация может предоставлять дополнительные средства или варианты, не обусловленные в данном стандарте, Реализация остается согласующей даже в том случае, если: она предоставляет пользователю варианты для работы с несогласующим языком SQL или для работы с согласующим языком SQL несогласованным способом.

Объявления согласования с настоящим стандартом будут устанавливать:

1)    Какгк* >1з следующих типов согласования объявляются:

a)    Полное согласование SQL с уровнем 1;

b)    полное согласование SQL с уровнем 2;

c)    согласование SQL — DDL с уровнем 1;

d)    согласование SQL — DDL с уровнем 2;

e)    согласование SQL — DML с уровнем 1;

f)    согласование SQL — DML с уровнем 2.

2)    Какие из следующих средств реализованы:

a)    прямая обработка указаний языка управления данными SQL;

b)    модульный язык (<модуль>);

c)    встроенный SQL КОБОЛ (<встроенная программа* SQL КОБОЛ»;

d)    встроенный SQL ФОРТРАН (<встроенная программа: SQL ФОРТРАН»;

e)    встроенный SQL ПАСКАЛЬ (<встроенная программа: SQL ПАСКАЛЬ»;

f)    встроенный SQL ПЛ/1 (<встроенная программа SQL ПЛ/1».

3)    Реализованы ли средства расширения целостности. Настоящий стандарт не определяет метод или время связи

между прикладными программами и компонентами системы управления базой данных.

4 ПОНЯТИЯ    i

4.1 Множества    \

Множество есть неупорядоченный набор определенных объектов.

Мультимножество — неупорядоченный набор объектов, которые не обязательно являются определенными.

S

Страница 11

г

ГОСТ Р ИСО/МЭК 9075—93

Последовательность — это упорядоченный набор объектов, которые не обязательно являются различными.

Мощность набора — это количество объектов в этом наборе. .Если не определено специально, любой набор может быть пустым.

4.2 Типы данных

Тип данных является множеством представляемых значений. Логическое представление значения — это <литерал>. Физическое представление значения определяется разработчиком.

Значение является базисным элементом, то есть оно не имеет логического подразделения в данном стандарте. Значение является нулевым или ненулевым значением.

Нулевое значение является специальным значением, которое задается разработчиком в зависимости от типа, то есть оно отличается от всех ненулевых значений этого типа.

Ненулевое значение является либо строкой символов, либо числом. Строка символов и число не являются сопоставимыми значениями.

4.2.1    Строки символов

Строка символов состоит из последовательности символов из множества символов, определенных разработчиком. Строка символов имеет длину, которая является положительным целым, определяющим количество символов в последовательности.

Все строки символов сопоставимы. Строка символов идентична другой строке символов, если и только если она равна этой строке символов в соответствии с правилами сопоставления, заданными в 5.11 «<предикат сравнения>».

4.2.2    Числа

Число является либо точным численным значением либо приближенным численным значением. Все числа являются сопоставимыми значениями.

Точное численное значение имеет точность и масштаб. Точность представления является положительным целым, которое определяет число значащих десятичных цифр. Масштаб является неотрицательным целым. Масштаб О указывает, что данное число является целым. Для масштаба N точное численное значение является целым значением значащих цифр, умноженных на 10 в степени —N.

Приближенное численное значение состоит из мантиссы и экспоненты. Мантисса является отмеченным знаком чирленным значением, а порядок — это отмеченное знаком целое, которое задает величину мантиссы. Приближенное численное значение имеет точность. Точность является положительным целым, которое определяет число значащих двоичных цифр в мантиссе.

6

Страница 12

ГОСТ Р ИСО/МЭК 9075—95

Когда точное численное значение приписано элементу данных или параметру, представляющему точное численное значение, то-приближение его значения, сохраняющее первые значащие цифры, представляется в типе элемента данных. Это значение преобразуется с тем, чтобы оно имело точность и масштаб элемента данных.

Когда точное или приближенное численное значение приписывается элементу данных нли параметру, представляющему приближенное численное значение, то приближение его значения представляется в типе элемента данных. Это значение преобразуется: с тем, чтобы оно имело точность цели.

4.3    Столбцы

Столбец является мультимножеством значений, которые могут изменяться со временем. Все значения в одном и том же столбце имеют один и тот же тип данных и являются значениями в одной и той же таблице. Значение столбца является наименьшей единицей данных, которая может быть выбрана из таблицы, и наименьшей единицей данных, которую можно обновить.

Столбец имеет описание и заданное положение в таблице-. Описание столбца включает его тип данных и указание, ограничен ли столбец содержанием только ненулевых значений. Описание столбца строки символов задает длину строки символов. Описание приближенного численного столбца определяет точность его чисел. Описание точного численного столбца определяет точность и масштаб чисел в столбце.

Поименованный столбец является столбцом поименованной таблицы или столбцом, который наследует описание поименованного столбца. Описание поименованного столбца включает его имя.

4.4    Таблицы

Таблица является мультимножеством строчек. Строчка является непустой последовательностью значений. Каждая строчка одной и той же таблицы имеет одну и ту же мощность и содержит значение каждого столбца этой таблицы, i-e значение в каждой строчке таблицы представляет собой значение i-ro столбца этой таблицы. Строчка является наименьшим элементом данных, который может быть вставлен в таблицу и удален из таблицы.

Порядком таблицы является количество столбцов в э^ой таблице. В любой момент времени порядок таблицы — это\то же самое, что количество элементов (мощность) каждой из ее строк, а мощность таблицы — это то же самое, что и мощность каждого из ее столбцов.

7

Страница 13

ГОСТ Р И СО/М ЭК 9075—93

Таблица имеет описание. Это описание включает в себя описание каждого из ее столбцов.

Базовая таблица — это поименованная таблица, определенная 1с помощью <определения таблицы>. Описание базовой таблицы включает в себя ее имя.

Производная таблица — это таблица, производная прямо или косвенно от одной или более других таблиц путем вычисления Сспецификации запросов>. Значения производной таблицы явля-:ются значениями таблиц, лежащих в ее основе при ее получении.

'Представляемая таблица является поименованной таблицей, которая определена <определением представления>. Описание представляемой таблицы включает ее имя.

Таблица является либо обновляемой, либо только считываемой. Операции вставки, корректировки и удаления разрешены для обновляемой таблицы и не разрешены для только считываемой.

Группированная таблица — это множество групп, выведенных при вычислении <спецификатора*группировки>. Группой является мультимножество строк, в которых все значения группирующих столбцов (-а) равны. Группированные таблицы могут рассматриваться как набор таблиц. Установочные функции могут действовать на отдельные таблицы в рамках группированной таблицы.

Группированное представление — это представляемая таблица, выведенная из группированной таблицы.

4.5 Ограничения целостности

Ограничения целостности определяют достоверные состояния базы данных путем ограничения значений в базовых таблицах.

Ограничения целостности эффективно проверяются после выполнения каждого Соператорз SQL>. Если базовая таблица, связанная с ограничениями целостности, не удовлетворяет этому ограничению целостности, то <оператор SQL> не оказывает воздействия, и параметр SQLCODE устанавливается в заданное разработчиком отрицательное число.

<Определение ограничения уникальности> требует, чтобы никакие две строки в таблице не имели одинаковых значений в заданных столбце или столбцах.

i Определение NOT NULL (нулевое) требует, чтобы ни одно из значений в столбце не было нулевым значением.    \

<Определение ограничения на ссылки> требует, чтобы для -каждой строки одной заданной таблицы, «обращающейся таблицы», 'значения заданного столбца или столбцов либо имели хотя ■бы одно нулевое значение, либо были такими же, как и значения заданного столбца или столбцов в некоторой строке другой задан-

s

Страница 14

ГОСТ Р ИСО/МЭК 9075-93

■ной таблицы, «таблицы, к которой обращаются». Обращающаяся таблица может быть такой же, как и таблица, к которой обращаются.

<Проверочное определение ограничения> требует, чтобы заданное <условие поиска> не было ложным в любой строке таблицы.

4.6    Схемы

<Схема> является устойчивым объектом, который задается с помощью языка определения схемы. Она состоит из <специфи-катора полномочий схемы > и всех <определения (-ий) табли-цы>, <определения (-ий) представления> и Сопределения (-ий) привилегий>, известных для системы для заданного <иден-тификатора полномочий> в данной среде. Понятие среды определяется разработчиком.

Таблицы, представления и привилегии, определенные <схе-мой>, считаются «присвоенными» или «созданными» <идентификатором полномочий>, заданным для данной <схемы>.

Примечание — Реализация может предоставлять средства (такие как DROP TABLE, DROP VIEW, ALTER TABLE и ALTER VIEW), которые дают возможность определения таблиц, представлений и привилегий для данного <идентификатора полномочий^», который создается, разрушается и модифицируется постепенно со временем. Однако этот стандарт только адресует <схему> (-ы), которые представляют определения, известные системе в данный момент времени.

4.7    База данных

База данных — это набор всех данных, определяемых <схе-мой> (-ами) в среде. Понятие среды задается разработчиком.

4.8    Модули

<Модуль> — это устойчивый объект, заданный на модульном языке. <Модуль> состоит из произвольного <имени модуля^ <спецификатора языка>, Спецификатора полномочий модуля>, нулевого или большего количества указателей, заданных <объявлением курсора>, и одной или более <процедурой> (-ами).

Прикладная программа является сегментом исполнительного кода, возможно, состоящего из множества подпрограмм. Одиночный <модуль> связан с прикладной программой во время^ее выполнения. Прикладная программа будет связана по крайней мере с одним <модулем>. Способ задания этой связи, включая возможное требование к выполнению некоторого определенного разработчиком указания, определяется разработчиком.

9

Страница 15

ГОСТ Р ИСО/МЭК 9075-93    '

4.9    Процедуры

<Процедура> состоит из <имени процедуры>, последовательности <объявления (-ий) параметров> и одиночного <опе-ратора SQL>.

Прикладная программа, связанная с <модулем>, может обращаться к <процедуре> (-рам) этого <модуля> с помощью-«запрашивающего» оператора, задающего <имя процедуры> для данной <процедуры>, и дает последовательность значений параметров, соответствующих по числу и по Стипу данных> Собъявлению параметра> (-ров) <процедуры>. .Вызов <про-цедуры> обуславливает Соператор SQL>, содержащийся в ней,, для исполнения.

4.10    Параметры

Параметр объявляется в <процедуре> Собъявлением пара-метра>. <Объявление параметра> задает <тип данных> его значения. Параметр либо предполагает, либо предоставляет значение соответствующего аргумента в вызове этой <процедуры>.

4.10.1    Параметр SQLCODE

Параметр SQLCODE является специальным целочисленным параметром. Его значение присваивается коду состояния, который либо показывает, что вызов <процедуры> успешно завершен, либо что имели место особые условия во время выполнения <процедуры >.

4.10.2    Параметры-признаки

Параметр-признак является целочисленным параметром, который задается после другого параметра. Его главная цель — указать, является ли нулевым значение, которое другой параметр приобретает или передает.

4.11    Стандартные языки программирования

Настоящий стандарт задает действие <процедуры> (-р) в <модуле> (-лях), когда эти <процедуры> вызываются программами, которые соответствуют заданным стандартным языкам программирования. Термины «стандартная программа КОБОЛ», «стандартная программа ФОРТРАН», «стандартная программа ПАСКАЛЬ», «стандартная программа ПЛ/1» относятся к программам, которые соответствуют критериям соответствия 'стандартам, приведенным в разделе 2 «Ссылки».

4.12    Курсоры    v

Курсор задается Собъявлением курсора>.    '■

Для каждого <объявления курсора> в <модуле> курсор-эффективно создается, когда транзакция (см. 4.16 «Транзакция»),.

10

Страница 16

ГОСТ Р ИСО/МЭК 9075-93

обращающаяся к модулю, начинается, и разрушается, когда эта транзакция заканчивается.

Курсор находится либо в открытом, либо в закрытом состоянии. Начальным состоянием курсора является закрытое состояние. Курсор помещается в открытое состояние Соператором открытия> и возвращается в закрытое состояние Соператором закрытия>, Соператором блокировки> или Соператором воз-врата>.

Курсор в открытом состоянии обозначает таблицу, упорядочение строк в этой таблице и положение относительно этого упорядочения. Если Собъявление курсора> не включает Сспецифи-катор упорядочения> или если оно включает Сспецификатор упорядочения^ который не полностью задает упорядочение строк, то строки в таблице имеют порядок, полностью или частично определяемый разработчиком.

В пределах одной транзакции, где упорядочение строк не определено или определено не полностью Сспецификатором упорядочения >, то относительное положение двух строк будет в общем случае одинаковым в любой момент времени в период, когда курсор открыт. Упорядочение может изменяться от одного момента времени к другому, если значения базы данных или значения параметров, запрашиваемых в Сспецификации курсора>, в С объявлении курсора>, различны.

В отдельных транзакциях, даже если значения баз данных и значения параметров, запрашиваемых в Сспецификации курсо-ра> в Собъявлении курсора>, одинаковы, порядок строк, определенный одной и той же С спецификацией курсора> и Соператором открытия>, может быть различным.

Курсор располагается в открытом состоянии либо перед определенной строкой, на определенной строке, либо после последней строки. Если курсор находится на строке, то эта строка является текущей строкой для курсора. Курсор может находиться перед первом строкой или после последней строки, даже если таблица пуста.

С Оператор выбор'Ки> перемещает положение открытого курсора к следующей строке по порядку следования курсора и отыскивает значения столбцов этой строки. сОператор корректировки: по положению> корректирует текущую строку курсора. СОператор удаления: по положению> удаляет текущую строку курсора.

Если курсор находится перед строкой, и в это положение вставляется новая строка, то влияние, если оно есть, на положение курсора задается разработчиком.

И

Страница 17

ГОСТ Р ИСО/МЭК 9076—93

Если курсор находится на строке или перед строкой, и эта строка удаляется, то курсор располагается перед строкой, находящейся непосредственно после положения удаляемой строки. Если такая строка не существует, то курсор располагается после последней строки.

Если происходит ошибка во время выполнения <оператора SQL>, который идентифицирует открытый курсор, то влияние, если оно есть, на положение или состояние этого курсора определяется разработчиком.

Рабочая таблица — это таблица, появляющаяся при открытии курсора. Разработчик определяет, приводит открытие курсора к появлению рабочей базовой таблицы или рабочей представленной таблицы.

Каждая строка рабочей представленной таблицы появляется только тогда, когда курсор устанавливается на эту строку.

Рабочая базовая таблица возникает, когда курсор открывается, и исчезает, когда курсор закрывается.

4.13    Операторы

СОператор SQL> задает работу базы данных или работу курсора. <Оператор выборки> делает выборку значений из таблицы. <Оператор вставки> вставляет строки в таблицу. СОператор корректировки: поиск> или <оператор корректировки: по положению> корректирует значения в строках таблицы. СОператор удаления: поиск> или Соператор удаления:    по    положе-

нию> удаляет строки из таблицы.

4.14    Встроенный синтаксис

Встроенная общая программа SQL (<встроенная программа SQL КОБОЛ>, <встроенная программа SQL ФОРТРАН>, <встроенная программа SQL ПАСКАЛЬ> или <встроенная программа SQL ПЛ/1 >) является прикладной программой, которая состоит из текста языка программирования и текста SQL. Текст языка программирования должен соответствовать требованиям заданного стандартного языка программирования. Текст SQL состоит из одного или более Соператоров встроенного SQL> и, произвольно, одного или более разделов <встроенных разделов объявления SQL>. Это позволяет выражать прикладнце базы данных в гибридной форме, в которой <оператор SQL> встроен непосредственно в прикладную программу. Такая гибридна? прикладная программа по определению должна быть эквивалентной стандартной прикладной программе, в которой Соператор S^L> заменен стандартной процедурой или подпрограммой ВЫЗОВ <процедур> (-ы) SQL в отдельном <модуле> SQL.

12

Страница 18

ГОСТ Р И СО/МЭК 9075-9»

4.15 Привилегии

Привилегия разрешает выполнение данной категории <дей-ствия> на заданной таблице или просмотр с помощью заданного <идентификатора полномочий>. Можно задать <операции> INSERT, DELETE, SELECT, UPDATE и REFERENCES.

<Идентификатор полномочий> задается для каждой <схе-мы> и <модуля>.

СИдентификатор полномочий>, заданный для <схемы>,. должен отличаться от <идентификатора полномочий> любой другой <схемы> в данной среде. <Идентификатор полномочий> <схемы> является «владельцем» всех таблиц и представлений, определенных в этой <схеме>.

Таблицы и представления обозначаются <табличными имена-ми>. <Табличное имя> состоит из <идентификатора полномо-чий> и <идентификатора>.    <Идентификатор полномочий>

идентифицирует <схему>, в которой была определена таблица или представление, <табличным именем>. Таблицы и представления, определенные в различных <схемах>, могут иметь один и тот же <идентификатора

Если обращение к Стабличному имени> не содержит в явкой форме <идентификатор полномочий>, то <идентификатор пол-номочий> содержащей его <схемы> или <модуля> задается по умолчанию.

< Идентификатор полномочий> <схемы> имеет все привилегии на таблицах и представлениях, определенные в данной <схеме>.

<Схема> с данным <идентификатором полномочий> может содержать Сопределения привилёгий>, предоставляющие привилегии другим <идентификаторам полномочий>. Предоставленные привилегии могут применяться к таблицам и представлениям, определенным в текущей <схеме>, либо они могут быть привилегиями, которые предоставлены данному <идентификатору пол-номочий> другими <схемами>. Предложение WITH GRANT OPTION <определения привилегий> определяет, может ли получатель привилегии передать ее другим.

<Модуль> определяет <идентификатор полномочий>, <идентификатор полномочий модуля>, который должен иметь привилегии, заданные для каждого <оператора SQL>, в <мо-дуле>.

4.16 Транзакции    \

Транзакция является последовательностью операций, включая операции базы данных, которые являются элементарными по отношению к восстановлению и параллелизму. Транзакция начинает-

Страница 19

ГОСТ Р ИСО/МЭК 9075—93

ся при вызове <процедуры> и при том, что в этот момент ни одна транзакция не выполняется. Транзакция заканчивается <опе-ратором фиксации> или <оператором отката >. Если транзакция заканчивается <оператором фиксации>, то все изменения, произведенные в базе данных этой транзакцией, становятся доступными для всех параллельных транзакций. Если транзакция заканчивается <оператором отката>, то все изменения, которые произвела данная транзакция, уничтожаются. Заблокированные изменения не могут быть уничтожены. Изменения, произведенные в базе данных транзакцией, могут быть восприняты этой транзакцией, но пока эта транзакция не закончится <оператором блокировки^ они не могут восприниматься другими транзакциями.

Исполнение параллельных транзакций гарантированно переходит в последовательную форму. Последовательное исполнение определяется как исполнение операций параллельно выполняемых транзакций, которое оказывает такое же влияние, как и некое последовательное выполнение тех же самых транзакций. Последовательное выполнение таково, что в нем каждая транзакция выполняется так, чтобы выполнение закончилось до начала следующей транзакции.

Исполнение Соператора SQL> в пределах транзакции не оказывает влияния на базу данных, отличающегося от влияния, которое установлено в Общих правилах для этого Соператора SQL>.

Наряду с последовательным выполнением, это означает, что все операции считывания воспроизводимы в пределах транзакции, за исключением:

1)    Влияние изменений на базу данных и ее содержание осуществляется исключительно самой транзакцией.

2)    Влияние различий в значениях параметров, подвергаемых процедурам обработки, открывает курсоры для последовательного поиска с помощью этих курсоров.

5 ОБЩАЯ ЛЕКСИКА

5.1 <символ>

Функция

Определяет графические римволы и элементы символьных •-строк, допустимые в языке.

Формат

<символ> : : =

<цифра> ] <буква> | Сспециальный символ>

14

Страница 20

ГОСТ Р ИСО/МЭК 9О75-0&

<цифра> : : =

0|]|2|3|4|5|6|7[8|9

<буква> : : =

<прописная буква> | <строчная буква> <прописная 6уква> : : =

A|B|C|D|E|F|G|H|I J | К | L | М. 1N | О | Р | Q | R S | Т | U | V | W | X | Y | Z <строчная буква> : : =

a|b c|d|e|f|g|h|i j|k 1 |m|n|o|p|q|r S11 UIVIWIX | у I z Сспециальный символ> :: =

см. Правило синтаксиса 1.

Правила синтаксиса

1)    Сспециальный символ> — это любой символ из набора символов, определенного разработчиком реализации, отличный от <цифры> или <буквы>. Если разработчиком реализации в ка* честве указателя конца строки определен символ, то он исключается из набора специальных символов.

Примечание — См. 5.3 <лексема>, <новая строка> «Формат*.

2)    Набор Сспециальный символ> должен включать в себя все символы, отличные от <буквы> и <цифры>, включенные в наборы графики терминальных устройств, используемых при работе с языком SQL. В набор специальных символов должны обя~ зательно входить символы «процент» и «подчеркивание».

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

Не имеется.

5.2 <литерал>

Функция

Определяет значение (кроме неопределенных).

Формат

<литерал> :: =

Сстроковый литерал>

| < числовой литерал>    *

<строковый литерал> :: ~ ч

* <символьное представление> \. <символьное представление> :: =*    \

<символ, отличный от кавычек> |<кавычки>

<символ, отличный от кавычек> :: *=

см. Правила синтаксиса 1.

15»

Страница 21

ГОСТ Р ИСО/МЭК 9075—93

<кавычки> :: =

«

Счисловой литерал> :: =

Сточный числовой литерал>

| <приближенный числовой литерал> <точный числовой литерал> :: =

[+ |—]{<целое без знака> [. <целое без знака>]

| < целое без знака >.

| . Сцелое без знака>}

<приближенный числовой литерал> :: =

< мантисса > Е < порядок>

<мантисса> :: = Сточный числовой литерал>

Спорядок> :: = Спелое со знаком>

Сцелое со знаком> :: = [+ |—]Сцелое без знака>

Сцелое без знака> :: =

Сцифра> ...

Правила синтаксиса

1)    Ссимвол, отличный от кавычки> — это любой символ, за исключением символа «одиночная кавычка (апостроф)» (’).

2)    Тип данных, к которому относится Сстроковый литерал> — это строка символов. Длина Сстрокового литерала> определяется как число С символьных представлений> в этом литерале. Скавычки> в Сстроковом литерале> — это -символы «одиночная кавычка», определяющие как значение, так и длину Сстрокового литерала>.

3)    В Сточном числовом литерале> без десятичной точки (.) десятичная точка подразумевается после последней Сцифры>.

4)    Сточный числовой литерал> относится к точному числово- , му типу данных. Точность Сточного числового литерала> определяется количеством -С цифр >, которые в него входят: Дробная часть Сточного числового литерала> характеризуется количеством Сцифр> справа от десятичной точки.

5)    С приближенный числовой литерал > относится к приближенному числовому типу данных. Точность Сприближенного числового литерала> — это точность его Смантиссы>.

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

1)    Значением Сстрокового литерала> является последовательность содержащихся в нем С символов >.

2)    Числовое значение Сточного числового литерала> бпреде-ляется путем обычной математической интерпретации, принятой в позиционной десятичной системе счисления для чисел со знаком.

16

Страница 22

ГОСТ Р ИСО/МЭК 9076-93

*3) Числовое значение <приближенного числового литерала> определяется как произведение точного числового значения, заданного в <мантиссе>, и числа, полученного путем возведения числа 10 в степень, заданную < порядком >.

5.3 <лексема>

Функция

Определяет лексические единицы.

Формат

<лексема> :: =

Слексема, не являющаяся ограничителем>

| <лексема-ограничитель>

<лексема, не являющаяся ограничителем> :: = <идентификатор>

| <ключевое слово>

|<числовой литерал>

<идентификатор> :: =

<прописная буква> |{[<подчеркивание> | <буква или циф-ра>}...]

<подчеркивание> :: =

<буква или цифра> :: «

Спрописная буква> |<цифра>

<ключевое слово> :: *=*

ALL | AND | ANY | AS | ASC | AUTHORIZATION | AVG I BEGIN | BETWEEN | BY

| CHAR | CHARACTER | CHECK | CLOSE | COBOL | COMMIT | CONTINUE | COUNT | CREATE | CURRENT | CURSOR | DEC | DECIMAL | DECLARE | DEFAULT | DELETE | DESC |

| DISTINCT | DOUBLE

| END | ESCAPE | EXEC | EXI STS

| FETCH | FLOAT | FOR | FOREIGN | FORTRAN | FOUND | FROM

| GO | GOTO | GRANT | GROUP | HAVING

| IN | INDICATOR | INSERT | INT | INTEGER | INTO | IS

| KEY | LANGUAGE | LIKE

| MAX | MIN | MODULE | NOT | NULL | NUMERIC

1 OF | ON | OPEN | OPTION | OR | ORDER

| PASCAL | PL11 PRECISION | PRIMARY | PRIVILEGES |\

| PROCEDURE | PUBLIC    \

| REAL | REFERENCES | ROLLBACK | SCHEMA | SECTION | SELECT | SET | SMALLINT | SOME | SQL ISOLCODE | SQLERROR | SUM

Страница 23

ГОСТ Р ИСО^МЭК 9076—93

| TABLE | ТО | UNION | UNIQUE | UPDATE | USER ] VALUES | VIEW | WHEN EVER | WHERE | WITH | WORK' <лексема-ограничитель> :: =

<строковый литерал>

I . I (I) I < I > I • I: I = I * 1+1 —|/|<> |> = I < = <разделитель> :: =

{<комментарий> | <пробел> | <новая строка>}... <коммеНтарий> :: —

<начало комментария> [<символ>...] <новая строка> <новая строка> :: =

признак конца строки, определенный разработчиком реализации <пробел> :: = символ «пробел»

Правила синтаксиса

1)    <лексема>, не являющаяся <строковым литералом>, не должна содержать <пробел >.

2)    За каждой <лексемой> может следовать <разделитель>. За < лексемой, не являющейся ограничителем>, должен следовать <разделитель> или <лексема-ограничитель>. Если синтаксис не позволяет, чтобы за Слексемой, не являющейся ограничителем^ следовала <лексема-ограничитель>, то ' за такой <лексемой, не являющейся ограничителем>, должен следовать <разделитель>.

3)    <идентификатор> может включать в себя не более 18 <символов>.

4)    .<идентификатор> не должен совпадать с Сключевым ело-вом>.

5)    Сначало комментария> — это последовательность из двух или более следующих друг за другом дефисов (-), не разделенных ни <пробелом>^, нй <новой строкой>, которая не входит в состав Сстрокового литерала>.

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

Не имеется.

5.4 < имена>    \

Функция    \

Задает имена.

Формат    —

<имя таблицы> :: —

[<идентификатор полномочий>.]<идентификатор таблицы> <идентификатор полномочий> :: = <идентификатор>

18

I

Страница 24

ГОСТ Р ИСО/МЭК 9076—93

-С идентификатор таблицы> :: = <идентификатор>

<имя столбца > :: = <идентификатор>

<соотнесенное имя> :: = <идентификатор>

<имя мод^ля> :: = <идентификатор>

<имя курсора> :: = <идентификатор>

<имя процедуры> :: = <идентификатор>

<имя параметра> :: = <идентификатор>

Правила синтаксиса

1)    <имя таблицы> идентифицирует именованную таблицу.

2)    Если <имя таблицы> не включает в себя <идентификатор лолномочий>, то:

a)    если <имя таблицы> содержится в <схеме>, то неявным образом используется <идентификатор полномочий;^ указанный в качестве <идентификатора полномочий схемы>;

b)    если <имя таблицы> содержится в <модуле>, то неявным образом используется <идентификатор полномочий;^ указанный в качестве Сидентификатора полномочий модул я >.

3)    Два Симени таблицы> считаются идентичными тогда и только тогда, когда совпадают их <идентификаторы таблицы> и Сидентификатор полномочий>, независимо от того, в какой форме задан <идентификатор полномочий> — явной или неявной.

4)    <имя таблицы> задается в «Определении таблицы> или в Сопределении представления>.

5)    В <SQL-onepaTope> Симя таблицы> должно указывать таблицу, определенную в <схеме>.

6)    Сидентификатор полномочий> представляет собой идентификатор полномочий доступа.    /

7)    ^соотнесенное имя> задается с помощью Сидентификато-ра> и используется для указания таблицы в определенных контекстах. <соотнесенное имя> применяется в таких контекстах как Соператор выборки>, <подзапрос> или <спецификация за-проса> (см. 5.20 Сспецификатор отображения>). Эти контексты могут быть вложенными. Одно и то же Соотнесенное имя> в различных контекстах может относиться и к разным таблицам, и к одной таблице.

8) <имя столбца> идентифицирует именованный столбец. <имя столбца> задается в виде <идентификатора> либо\в Сопределении таблицы>, либо в Сопределении представления>.

9)    С имя модуля> идентифицирует Смодуль>.

10)    Симя курсора> идентифицирует Суказатель>.

11)    Симя процедуры> идентифицирует Спроцедуру>.

19

Страница 25

ГОСТ 1> И СО/М ЭК. 9075-93

12) <иия параметра> идентифицирует параметр.

Общие правила Не имеется.

5.5 <тип данных>

Функция

Задает тип данных.

Формат

<тип данных> :: =

<строковый тип>

| Сточный числовой тип>

| <приближенный числовой тип>

<строковый тип> :: =

CHARACTER [(<длина>)]

ICHAR [(<длина>)]

<точный числовой тип> :: =

| NUMERIC Г(<точность>[, <масштаб>1)1 j DECIMAL [(<точность>[, <масштаб>])]

|DEC [(<точность>[, <масштаб>])]

| INTEGER [INT

ISMALLINT <приближенный числовой тип> :: =

FLOAT [(<точность>)]

IREAL

|DOUBLE PRECISION <длина> :: — <целое без знака>

. <точность> :: = <целое без знака>

<масштаб> :: = <целое без знака>

Правила синтаксиса

1)    CHAR является синонимом CHARACTER. DEC является синонимом DECIMAL. INT является синонимом INTEGER.

2)    <длина> и <точность> должны задаваться <целым без знака>, значение которого больше 0.

3)    Если <длина> не указана, то она принимается за 1. Если

не указан <масштаб>, то он принимается за 0. Если не указана <точность>, то принимается значение, определенное разработчиком реализации.    V

4)    В <точном числовом типе> значение <масштаб^> не должно превышать значения <точности>.

5)    CHARACTER задает тип данных строки символов, длина которой указана в <длине>.

20

Страница 26

ГОСТ Р ИСО/МЭК 9075—93

6)    NUMERIC задает тип данных точного числа, точность н масштаб которого задается <точностью> и <масштабом>.

7)    DECIMAL задает тип данных точного числа, масштаб которого задается <масштабом>, а точность определена разработчиком реализации и может быть равна или больше значения, за-

' данного <точностью>.

8)    INTEGER задает тип данных точного числа, точность которого определена разработчиком реализации, а значение масштаба принято равным 0.

9)    SMALLINT задает тип данных точного числа с нулевым масштабом, точность которого, определенная разработчиком реализации, не превышает точности, определенной разработчиком реализации для типа INTEGER.

10)    FLOAT задает тип данных приближенного числа, точность двоичной формы которого равна или больше значения, заданного в <точности>.

11)    REAL задает тип данных приближенного числа, точность которого определена разработчиком реализации.

12)    DOUBLE PRECISION задает тип данных приближенного числа, точность которого, определенная разработчиком реализации, превышает точность, определенную разработчиком реализации для REAL.

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

Не имеется.

5.6 Сспецификация значения> и <спецификация цели>

Функция

Задает одно или более значений, параметров или переменных.

Формат

Сспецификация значения> :: =

Сспецификация параметра>

J Сспецификация переменной>

|Слитерал>

|USER

<спецификация цели> :: =

Сспецификация параметра>

| Сспецификация переменной>

Сспецификация параметра> :: =

Симя параметра> [Спараметр-признак>

<параметр-признак> :: =

I [INDICATOR] Симя параметра>

Сспецификация переменной> :: =

Симя встроенной переменной> [Спеременная-признак>]

21

Страница 27

ГОСТ Р ИСО/М9К 9075—93

<переменная-признак>':: =

[INDICATOR] <имя вложенной переменной>

Правила синтаксиса

1)    Сспецификация значения> задает такие значения, которые не выбираются из таблицы.

2)    Сспецификация параметра> идентифицирует параметр или же параметр с параметром-признаком. Параметр-признак относится к точному числовому типу данных с нулевой дробной частью. Особенности Сточного числового типа> применительно к параметрам-признакам определяются разработчиком реализации.

3)    Сспецификация переменной> идентифицирует переменную, принадлежащую включающей программе или такую же переменную вместе с переменной-признаком. Переменная-признак должна относиться к тому типу данных, который определен разработчиком реализации для параметра-признаков.

4)    <спецификация цели> задает параметр или переменную, которым можно присвоить значение.

5)    Сспецификация параметра> должна включаться в Смо-дуль>. Сспецификация переменной> должна включаться во С встроенный SQL-оператор >.

6)    USER относится к строчному типу данных, длина строки определяется разработчиком реализации.

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

1)    Если Сспецификация параметра> включает в себя Спара-метр-признак>, значение которой является, отрицательной величиной, то Сспецификация параметра> задает неопределенное значение. В противном случае Сспецификация параметра> задает значение, равное значению параметра, указанного в Симени. параметра>.

2)    Если Сспецификация переменной> включает в себя Спе-ременную-признак>, значение которой является отрицательной величиной, то Сспецификация переменной> задает неопределенное значение. В противном случае Сспецификация переменной> задает значение, равное значению переменной, указанного\в Симе-ни встроенной перемённой>.

3)    Слитерал> задает значение, выраженное этим литералом.

4 4) Словом USER задается значение, равное значению Сиден-

тификатора полномочий>, указанного в качестве Сидентифика-тора полномочий модуля> в смодуле>, содержащем CSQL-one-ратор>, в результате выполнения которого вычисляется значение Сспецификации переменной> USER.

22

Страница 28

ГОСТ Р ИСО/МЭК 9076—93

5.7 <спецификация столбца>

Функция

Указывает именованный столбец.

Формат

< спецификация столбца > :: =

[<префикс>.] <имя столбца>

<префикс> :: =

<имя таблицы> j <соотнесенное имя>

Правила синтаксиса

1)    <спецификация столбца> указывает именованный столбец. Смысл такого указания зависит от контекста.

2)    <имя столбца> в <спецификации столбца> будем обозначать буквой С.

3)    Возможны следующие варианты:

a)    если Спецификация столбца> включает в себя Спре-фикс>, то <спецификация столбца> должна применяться в тех контекстах, где однократно или многократно используется <имя таблицы> или же Соотнесенное имя>, заданное <префиксом>. Если такое <имя таб-лицы> или <соотнесенное имя> используется многократно, то. <спецификация столбца > будет отнесена к тому из них, которое используется в наиболее локальном контексте. Таблица, обозначенная Симёнем табли-цы>, должна включать в себя столбец, имеющий <имя столбца > С;

b)    если Сспецификация столбца> не включает в себя

<префикс>, то она должна включаться в те контексты, где однократно или многократно используются имена Симя таблицы> или Ссоотнесенное имя>. Положим, что понятие «возможны префиксы» означает такие имена <имя таблицы> и <соотнесенное имя>, которые относятся к таблице, включающей в себя столбец с <именем столбйа> С. При этом в качестве неявно заданного <имени таблицы> или же <соотнесенного имени > может использоваться только один из возможных префиксов — тот, который входит в наиболее локальный контекст.    \

Примечание — Области применения («контекст») < имени таблицы> или <соотнесенного именн> указаны в 5.20 ■<спецификатор отображения>, в 6.2< определение таблицы>, в 8.5 Соператор удаления: поиск>, в 8.11 <оператор корректировки: по положению >, в 8.12 <оператор корректировки: лонск >.

23

Страница 29

ГОСТ Р ИСО/МЭК 9075-93

4)    Если Сспецификация столбца> входит в <выражение над таблицами> Т, а явно или неявно заданный <префикс>, относящийся к <спецификации столбца>, употребляется в контексте какого-либо <SQL-onepaTopa> или же <выражения над табли-цами>, куда входит <выражение над таблицами> Т, то Сспецификация столбца> представляет собой «внешнюю ссылку» на таблицу, заданную данным <префиксом>.

5)    Таблицу, к которой относится явно или неявно заданный <префикс> R, обозначим буквой Т. Типом данных Сспецифика-ции столбца > является тип данных столбца С таблицы Т.

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

1) «С» или «Л. С» указывает столбец С в соответствующей строке таблицы Т.

5.8 <спецификация функции набора>

Функция

Задает значение, которое является результатом функции от аргумента.

Формат

<спецификация функции набора> :: =

COUNT ( *)|<функция набора различимых объ-ектов> | <функция мультинабора>

<функция набора различимых объектов> :: =

{AVG|МАХ |MIN| SUM|COUNT) (DISTINCT <спецификация столбца>)    >

Сфункция мультинабора> : : =

{AVG|MAX]MIN|SUM) ([ALL]<выражение значения>)

Правила синтаксиса

1)    Аргументом функции COUNT ( *) и источником аргументов для <функции набора различимых объектов> и <функции муль-тинабора> является таблица или группа в сгруппированной таблице (см. 5.19 Стабличное значение>, 5.24 <подзапрос>, 5.25 <спецификация запроса>).

2)    Аргумент или источник аргументов для Сспецификации функции набора> обозначим буквой R.

3)    Сспецификация столбца> в <функции набора различимых объектов> и каждая Сспецификация столбца> в Свцражении над значениями > в <функции мультинабора> должна Однозначным образом указывать столбец в R и не должна быть ссылкой на столбец, полученный в результате выполнения функции, заданной Сспецификацией функции набора >.

24

Страница 30

ГОСТ Р ИСО/МЭК 9075-93

4)    <выражение значения> в <функции мультинабора> должно включать в себя <спецификацию столбца>, указывающую столбец в R, и не должно включать <спецификацию функции на-бора>. Если Сспецификация столбца> является внешней ссылкой, то <выражение значения> не должно включать в себя каких-либо операций.

Примечание — Понятие «внешняя ссылка» определено в 5.7 спецификация столбца >.

5)    Если <спецификация функции набора> содержит Спецификацию столбца>, которая является внешней ссылкой, то такая Спецификация функции набора> должна входить в <подза-прос> в составе Спецификатора выборки групп>.

Примечание — Понятие «внешняя ссылка» определено в 5.7 <специфика-ция столбца >.

6)    Тип данных, к которому относятся значения, полученные в результате вычисления Сспецификации столбца> или <выраже-ния значения>, обозначим буквой Т.

7)    Если задана функция COUNT, то результатом Спецификации функции набора> будет значение, относящееся к точному числовому типу данных с точностью, определяемой разработчиком реализации, и нулевой дробной частью.

8)    Если задана функция МАХ или MIN, то результат будет относиться к типу данных Т.

9)    Если задана функция SUM или AVG, то:

a)    Т не должен быть строкой символов;

b)    если задана функция SUM, а Т — точный числовой тип, то результат будет относиться к точному числовому типу данных, точность и дробная часть которого определяются разработчиком реализации;

c)    если задана функция AVG, а Т — точный числовой тип, то результат будет относиться к точному числовому типу" данных, точность и дробная часть которого определяются разработчиком реализации;

d)    если Т — приближенный числовой тип, то результат будет относиться к приближенному числовому типу с точностью, определяемой разработчиком реализации.

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

1) Аргументом <функции набора различимых о6ъектов> является набор значений. Этот набор получается в результате исключения всех неопределенных значений и всех избыточных дубликатных значений из столбца в /?, заданного <спецификацией: столбца>.

25

Страница 31

ГОСТ Р И СО/М ЭК 9075—93

2)    Аргументом <функции мультинабора> является мульти-набор. Этот набор получается в результате исключения всех неоп-

, ределенных значений из набора, полученного посредством ’применения <выражения значения> для каждой строки в R. Смысл <функции мультинабора> не зависит от того, задано ключевое слово ALL или нет.

3)    'Аргумент <функции набора различимых объектов> или <функции мультинабора> обозначим буквой 5.

4)    Возможны следующие варианты:

a)    если задана <функция набора различимых объектов> COUNT, то результатом будет мощность 5;

b)    если задана функция COUNT ( •), то результатом будет мощность /?;

c)    если заданы функции AVG, MAX, MIN или SUM, а 5-пустой набор, то результатом будет нулевое значение;

d)    если задана функция МАХ или MIN, то результатом бу

дет, соответственно, максимальное или минимальное значение в S. Эти значения определяются с помощью правил сравнения, описанных'в 5.11    <предикат сравне-

ния>;

e)    если задана функция SUM, то результатом будет сумма значений, составляющих 5. Сумма не должна выходить за пределы диапазона, обусловленного типом данных результата;

f)    если задана функция AVG, то результатом будет среднее от значений, составляющих S. Сумма не должна выходить за пределы диапазона, обусловленного типом данных результата.

5.9 <выражение значения>

Функция

.Задает значение.

Формат

<выражение значения> :: =

<терм>

|<выражение значения> + <терм>

I <выражение значения> — Стерм>*"    \.

<терм> :: =    \

<коэффициент>

|<терм> ♦ <коэффициент>

|<терм> / <коэффициент>

<коэффициент> ::

26

Страница 32

ГОСТ Р ИСО/МЭК 9075-9^

[+|— ] <первичное>

<первичное> ;: =

<спецификация значениям | Спецификация столбда>

| Сспецификация функции набора>

| (<выражение значения>)

Правила синтаксиса

1)    Если <выражение значения> включает в себя <функцик> набора различимых объектов>, то оно не должно включать каких-либо бинарных операций.

2)    Первый <символ> <лексемы>, А следующей за унарной операцией, не должен быть знаком «плюс» или «минус».

3)    Если <первичное> относится к строковому типу данных;, то <выражение значения> не должно включать в себя никаких операций. Результат будет относиться к строковому типу данных.

4)    Если оба операнда относятся к точному числовому типу данных, то результат будет относиться к точному числовому типу, точность и масштаб которого определяются следующим образом:

a)    обозначим масштаб первого и второго операндов как s/ и s2 соответственно;

b)    точность результата операций сложения и вычитания определяется разработчиком реализации, а масштаб определяется как шах (s/, s2);

c)    точность результата операции умножения определяется разработчиком реализации, а масштаб определяется как s/ + s2;

d)    точность и дробная часть результата операции деления определяется разработчиком реализации.

5)    Если хотя бы один из операндов, участвующих в операции, относится к приближенному числовому типу данных, то результат будет относиться к приближенному числовому типу. Точность результата определяется разработчиком реализации.

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

1)    Если значение любого из <первичных> является неопре

деленным, то результат <выражения значения> бу^ет неопределенным.    \

2)    Если операции не заданы, то результатом <выражения зна: чения> будет значение заданного <первичного>.

3)    Если <выражение значения> применяется к строке таблицы, то указание столбца означает указание значения элемента: данного столбца в данной строке.

2?

Страница 33

ГОСТ Р ИСО/МЭК 9075-93

4)    Унарные арифметические операции + и — представляют собой унарные плюс и минус соответственно. Унарный плюс не изменяет того операнда, к которому он относится. Унарный минус рассматривается как знак операнда.

5)    Бинарные арифметические операции + , —, # и / означают, соответственно, сложение, вычитание, умножение и деление. Делитель не должен быть нулем.

6)    Если результат арифметической операции относится к точному числовому типу данных, то возможны следующие варианты:

a)    если данная операция не является делением, то математический результат операции может быть представлен точным числом, где точность и дробная часть обусловлены типом данных результата;

b)    если данная операция является делением, то математический результат операции представляется приближенным числом, точность и дробная часть которого обусловлены типом данных результата, при этом потеря хотя бы одного старшего значащего разряда является недопустимой.

7)    Первыми вычисляются выражения, заключенные в скобки, а если скобки отсутствуют, то первыми выполняются вычисления, соответствующие унарным операциям, затем умножение и деление, а затем сложение и вычитание, операции одной и той же очередности выполняются слева направо.

5.10 Спредикат>

Функция

Задает условие, в результате вычисления которого может быть получено логическое значение «истина», «ложь» или «неизвестное».

Формат

<предикат> :: =

Спредикат сравнения>

| Спредикат интервала>

| Спредикат принадлежности>

| Спредикат подобия>    •    ,

| Спредикат нуля>

| Сквантифицированный предикат> у j Спредикат существования>

Правила синтаксиса

Не имеется.

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

1) Результатом С предиката > является результат его применения к заданной строке таблицы.

28

Страница 34

ГОСТ Р ИСО/МЭК 9075—93

5.11 Спредикат сравнения>

Функция

Задает сравнение двух значений.

. Формат

<предикат сравнения> :: =

<выражение значения>

Соперация сравнения> {<выражение значения>

| <подзапрос>}

Соперация сравнения> :: *=

= |<>|<|>|<=|> =

Правила синтаксиса

I) Типы данных первого и второго <выражения значения> или же <подзапроса> должны быть сравнимы между собой. Общие правила

1)    Результат первого <выражения значения> будем обозначать буквой х, а результат <подзапроса> или же второго <выражения значения> — буквой у. Мощность результата Сподзап-роса> не должна превышать 1. •

2)    Если х и у представляют собой неопределенные значения или же результатом < подзапроса > является пустой набор, то результатом выражения «х<операция сравнения>1/» будет неизвестное значение.

3)    Если х и у являются определенными значениями, то выражение «Жоперация сравнения>(/» может принимать значения «истина» или «ложь»:

«х=у» истинно тогда и только тогда, когда х равно у\

«х< >у:» истинно тогда и только тогда, когда х не равно у;

«х<у» истинно тогда и только тогда, когда х меньше у\

«х>у* истинно тогда и только тогда, когда х больше у\

«х<=у» истинно тогда и только тогда, когда х не больше у\ истинно тогда и только тогда, когда х не меньше у\

4)    Числовые типы сравниваются как алгебраические величины.    ^

5)    Сравнение двух символьных строк — это сравнение <сим-вол>ов, занимающих позиции с одним и тем же порядковым номером. Если символьные строки имеют неодинаковую\длину, то для сравнения используется рабочая копия более короткой строки, дополненная с правой стороны <пробел>ами таким образом, чтобы ее длина совпадала с длиной более длинной строки.

6)    Две символьные строки равны между собой, если равны между собой все <символ>ы, занимающие позиции с одним и тем же порядковым номером. Если две строки не равны, то их

2 Зак. 1649

2)

Страница 35

ГОСТ Р ИСО/МЭК 9075-93

отношение определяется путем сравнения между собой первой слева, пары несовпадающих <символ>ов. Это сравнение производится в соответствии со схемой упорядочения, определенной разработчиком реализации.

7) Хотя результатом выражения «х = у*, когда х и у являются неопределенными значениями, будет неизвестное значение, в контекстах GROUP BY, OPDER BY и DISTINGT два неопределенных значения считаются тождественными друг другу или же дубликатными.

5.12    Спредикат интервала>

Функция

Задает сравнение с граничными значениями интервала.

Формат

Спредикат интервала> :: =

<выражение значения>

[NOT] BETWEEN <выражение значения> AND<выpaжeниe значения>

Правила синтаксиса

1) Типы данных всех трех <выражений значения> должны быть сравнимы между собой.

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

1)    Обозначим буквами х, у и г, соответственно, результаты первого, второго и третьего <выражения значения>.

2)    Результат предиката «х BETWEEN у AND z* совпадает с результатом выражения <х>=у and *<=z».

3)    Результат предиката «х NOT BETWEEN у AND z* совпадает с результатом выражения «NOT х BETWEEN у AND z>.

5.13    <предикат принадлежности>

Функция

Задает квантифицированное сравнение.

Формат

<предикат нринадлежности> :: =

<выражение значения> [NOT] IN {<подзапрос>

| (Ссписок принадлежащих значений>)}

Ссписок принадлежащих значений> :: =    v

Сспецификация значения> {, <спецификация значения>}...;

Правила синтаксиса    ;

1) Типы данных первого <выражения значения> й <подзап- i роса> или же первого <выражения значения> и всех специфи- ?

зо

Страница 36

ГОСТ Р ИСО/МЭК 9075-93

наций Сспецификация значения> из <списка принадлежащих з'начений> должны быть сравнимы между собой.

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

1)    Результат <выражения значения> обозначим х. Результат <подзапроса>, как и в <квантифицированном предикате>, обозначим 5. Так же будем обозначать значения, заданные в Ссписке принадлежащих значений>, которые рассматриваются как элементы строк единственного столбца таблицы-столбца.

2)    Результат предиката «х IN S» равен результату «x = ANY S». Результат предиката «х NOT IN равен результату «NOT х IN S*.

5.14 Спредикат подобия>

Функция

Задает сравнение с шаблоном.

Формат

< предикат подобия> :: =

Сспецификация столбца> [NOT] LIKE <шаблон> [ESCAPE <спецсимвол>]

<шаблон> :: = Сспецификация значения>

<спецсимвол> :: = Сспецификация значения>

Правила синтаксиса

1)    Сспецификация столбца> должна относиться к столбцу строкового типа.

2)    Сшаблон> должен относиться к строковому типу данных.

3)    Сспецсимвол> должен представлять собой строку, включающую в себя один символ.

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

1)    Обозначим значение, указанное с помощью Сспецификации столбца>, буквой х, а результат Сспецификации значения>, с помощью которой задан Сшаблон>, — буквой у.

2)    Возможны следующие варианты: а) если задан Сспецсимвол>, то:

—    обозначим результат Сспецификации значения>, задающей Сспецсимвол>, буквой z;

—    необходимо иметь строку у, которая состоит из подстрок, включающих в себя либо 1, либо 2 символа*; подстрока длиной в 1 символ не может быть спецсимволом z, а в каждой подстроке длиной 2 символа первый должен быть спецсимвол z, а вторым — либо спецсимвол z, либо символ «подчеркивание», либо символ «процент». При таком формате строки у каждая из двух символьных

2*

Страница 37

ГОСТ Р ИСО/МЭК 9076-93

* -■ "• *• 1 •' .* •

подстрок обозначает однократное появление второго символа подстроки. Односимвольная строка, представляющая собой символ «подчеркивание», — это признак произвольного символа. Односимвольная подстрока, представляющая собой символ «процент», — это признак произвольной строки символов. Все односимвольные подстроки, которые не являются символом «подчеркивание» или же символом «процент», обозначают те символы, которые составляют эти подстроки;

Ь) если <спецсимвол> не задан, то каждый символ «подчеркивание» в составе строки у является признаком произвольного символа, каждый символ «процент» — признаком произвольной строки символов, а каждый символ строки у, отличный от символов «подчеркивание» и «процент», обозначает сам себя.

3)    Строка символов у представляет собой последовательность, включающую в себя минимальное количество признаков подстрок, при этом каждый <символ> строки у может входить в состав только одного признака подстроки. Признак подстроки — это признак произвольного символа или признак произвольной строки символов, или любая последовательность <символ>ов, отличных от признака произвольного символа или признака произвольной строки символов.

4)    Результатом предиката «* LIKE у> будет неизвестное значение, если х или у — неопределенные значения. Если х и у являются определенными значениями, то результатом «х LIKE у» будут либо значение «истина», либо значение «ложь».

5)    Результатом предиката «х LIKE у» будет значение «истина», если х можно разделить на подстроки следующим образом:

a)    подстрока в составе х представляет собой последовательность, состоящую из нуля или более соседних <сим-вол>ов из х, причем каждый <символ> из х входит в состав только одной подстроки;

b)    если /-й признак подстроки в у является признаком произвольного символа, то i-я подстрока в х включает в себя один любой символ;

c)    если £-й признак подстроки в у является признаком про

извольной строки символов, то i-я подстрока в х включает в себя любую последовательность из руля или более <символ>ов;    \

d)    если i й признак подстроки в у не является'- ни признаком произвольного символа; ни признаком произвольной строки символов, то i-я подстрока в х должна совпадать

Страница 38

ГОСТ Р ИСО/МЭК 9075-93

с признаком подстроки и иметь ту же длину, что и данный признак подстроки; е) количество подстрок в х должно быть равно количеству признаков подстрок в у.

6) результат предиката «х NOT LIKE у* равен результату «NOT (х LIKE у)*.

5.15    <предикат нуля>

Функция

Задает проверку на неопределенное значение.

Формат

< предикат нуля> :: =

Сспецификация столбца> I [NOT] NULL Правила синтаксиса Не имеется.

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

1)    Обозначим значение, указанное с помощью Сспецификации столбца> буквой х.

2)    Результатом предиката «х IS NULL» может быть либо значение «истина», либо значение «ложь».

3)    Результатом <х IS NULL» будет «истина» тогда и только тогда, когда х является неопределенным значением.

4)    Результат предиката «х IS NOT NULL» равен результату «NOT (х IS NULL)».

5.16    <квантифицированный предикат>

Функция

Задает квантифицированное сравнение.

Формат

Сквантифицированный предикат> :: =

<выражение значения>

<операция сравнения> <квантор> <подзапрос>

<квантор> :: =

<все> | <некоторые>

<все> :: — ALL    '

<некоторые> :: = SOME | ANY    .

Правила синтаксиса    \

1) Типы данных <выражения значения> и <подзапроса> должны быть сравнимы между собой.

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

33

Страница 39

ГОСТ Р ИСО/МЭК 9075-93

1)    Результат <выражения значения> обозначим буквой х, а результат < подзапроса> — буквой 5.

2)    Результатом предиката «х Соперация сравнения> Сквантор^ #5» будет результат неявно заданного <предиката сравнения > tx <операция сравнения> S», примененного для. каждого значения из *S.

Возможны следующие варианты:

a)    если 5 — пустой набор или же результатом неявно заданного <предиката сравнения> для каждого значения s из S является «истина», то результатом предиката «х Соперация сравнения> <все> 5» будет значение «истина»;

b)    если хотя бы для одного значения s из 5 результатом неявно заданного Спредиката сравнения> будет «ложь», то результатом предиката «х Соперация сравнения> <все> S» будет значение «ложь»;

c)    если хотя бы для одного значения s из 5 результатом неявно заданного <предиката сравнения> будет «истина», то результатом предиката «х <операция сравне-ния> <некоторые> 5» будет значение «истина»;

• d) если S'— пустой набор, или же результатом неявно заданного С предиката сравнения> для каждого значения s из 5 является «ложь», то результатом предиката «х Соперация сравнения> Снекоторые> 5» будет значение «ложь»;

е) если результатом предиката «х Соперация сравнения> Сквантор> 5» не является ни значение «истина», ни значение «ложь», то его результатом будет неизвестное значение.

5.17 С предикат существования >

Функция

Задает проверку на пустой набор.

Формат

С предикат существования > :: =

ЕХ1$Т$Сподзапрос>

Правила синтаксиса

Не имеется.    \

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

1)    Результат Сподзапроса> обозначим буквой 5.

2)    Результатом предиката «EXISTS S> может быть либо значение «истина», либо значение «ложь».

34    /

Страница 40

ГОСТ Р ИСО/МЭК 9075—93

3) Результатом предиката «EXISTS S» будет значение «истина» тогда и только тогда, когда 5 — непустой набор.

5.18 <условие поиска>

Функция

Задает условие, которое может принимать значения «истина», «ложь» или «неизвестное» в зависимости от результата выполнения логических операций над заданными условиями.

Формат

Сусловие поиска> :: =

< логический терм>

| <условие поиска> OR <логический терм>

Слогический терм> :: =

<логический коэффициент>

| Слогический терм> AND Слогический коэффициенту

Слогический коэффициент> :: =

[NOT] Слогическое первичное>

Слогическое первичное> :: =

Спредикат> | (Сусловие поиска>)

Правила синтаксиса

1) ССпецификация столбца> или Свыражение значения>, заданное в Сусловие поиска>, непосредственно содержится в этом Сусловии поиска>, если Сспецификация столбца> или Свыражение значения> не указано в Сспецификации функции набора> или в Сподзапросе> этого Сусловия поиска>.

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

1)    Результатом Сусловия поиска> будет результат применения логических операций к тем условиям, которые получены при применении заданного Спредиката> к данной строке таблицы или же к данной группе сгруппированной таблицы. Если же логические операции не заданы, то результатом Сусловия поиска> будет результат заданного Спредиката>.

2)    Результатом NOT («истина») является значение «ложь»,

результатом NOT («ложь») является значение «истина», результатом NOT («неизвестное») является неизвестное значение. Операции AND и OR определены в приведенных ниже иринностных таблицах.    \

AND*

истина

ложь

неизвестное

истина

истина

ложь

неизвестное

ложь

ложь

. ложь

ложь

неизвестное

неизвестное

ложь

неизвестное

35

Страница 41

ГОСТ Р ИСО/МЭК 9075-93

OR

истина

ложь

неизвестное

истина

истина

истина

истина

ложь

истина

ложь

неизвестное

неизвестное

истина

неизвестное

неизвестное

3)    Первыми вычисляются те выражения, которые заключены в скобки, а если скобки отсутствуют, то первой выполняется операция NOT, затем операция AND, затем операция OR, операции одной и той же очередности выполняются слева направо.

4)    Если <условие поиска> применяется к строке таблицы, то каждая <спецификация столбца>, непосредственным образом заданная в <условии поиска>, указывает на значение в данной строке таблицы, принадлежащее заданному столбцу.

5.19 <табличное выражение>

Функция

Задает таблицу или же сгруппированную таблицу.

Формат    \

Стабличное выражение>*:: =

Сспецификатор отображения> s    Г<спецификатор выборки>]

[<спецификатор группировки>]

[Сспецификатор выборки групп>]    .

Правила синтаксиса

1) Если таблица, указанная в Сспецификаторе отображения>, является сгруппированным представлением, то <табличное выра-жение> не должно включать в себя Сспецификатор выборки>, <спецификатор группировки> или <спецификатор выборки групп>.

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

1) Если в <табличном выражении> отсутствуют необязательные спецификаторы, то заданная им таблица представляет собой результат Сспецификатора отображениям В противном случае каждый заданный спецификатор применяется к результату предыдущего спецификатора, и заданная выражением таблица представляет собой результат последнего из заданных спецификаторов. Таблица, полученная в качестве результата Стабличного выраже-ния> такова, что i~й столбец производной таблицы наследует описание i-го столбца таблицы, заданной Сспецификатором отображениям

36

Страница 42

ГОСТ Р ИСО/МЭК 9075-93

5.20 <спецификатор отображения >

Функция

Задает таблицу, которая получается из одной или более именованных таблиц.

Формат

Спецификатор отображения> :: =

FROM <ссылка на таблицу> [{, С Ссылка на таблицу>}...]

<ссылка на таблицу> :: =

<имя таблицы> | Ссоотнесенное имя>

Правила синтаксиса

1)    <имя таблицы>, заданное в Сссылке на таблицу>, будет открыто в содержащем эту <ссылку на таблицу> <спецификаторе отображения> тогда и только тогда, когда в этой Сссылке на таблицу> не будет задано Ссоотнесенное имя>.

2)    Симя таблицы>, открытое в Сспецификаторе отображения^, должно отличаться от всех остальных имен Симя таблп-цы>, открытых в данном Сспецификаторе отображениям

3)    Ссоотнесенное имя>, заданное в Сссылке на таблицу>, должно отличаться от всех остальных имен Ссоотнесенное имя>, заданных в содержащем данную Сссылку на таблицу> Сспецификаторе отображения>, кроме того оно не должно совпадать с С идентификатором таблицы> какого-либо Симени таблицы>. открытого в данном Сспецификаторе отображениям

4)    Контекстом С соотнесенного имени > и открытого Сименн таблицы>, заданных в Сспецификаторе отображения>, является самый внутренний Сподзапрос>, Сспецификация запроса> или Соператор выборки>, которые содержат Стабличное выражением включающее в себя Сспецификатор отображения>. Сспеци-фикатор отображения> является контекстом заданного в нем Симени таблицы> тогда и только тогда, когда это Симя табли-цы> открыто в данном Сспецификаторе отображениям

5)    Если таблица, которую идентифицирует Симя таблицым является сгруппированным представлением, то Сспецификатор отображения> должен включать в себя только одну Сссылку на таблицу >.

6)    Возможны следующие варианты:    ^

a)    если Сспецификатор отображения> содержит только одно Симя таблицыМ то описание результата Сспеци-фикатора отображения> совпадает с описании таблицы, которую идентифицирует данное Симя таблицы>;

b)    если Сспецификатор отображения > содержит более одного Симени таблицы>, то описание результата Сспе-

21

Страница 43

ГОСТ Р И СО/М ЭК 9075—93

цификатора отображения >* будет представлять собой конкатенацию описаний тех таблиц, имена которых заданы в <спецификаторе отображениям Порядок конкатенации описаний определяется очередностью включения имен <имя таблицы> в <спецификатор отображения^.

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

1)    Когда в Сссылке на таблицу> задается <соотнесенное имя> или же открытое <имя таблицы>, то это <соотнесенное имя> или <имя таблицы> определяется тем самым в качестве указателя таблицы, идентифицируемой Сименем таблицы> из данной <ссылки на таблицу>.

2)    Возможны следующие варианты:

a)    если Сспецификатор отобра"жения> содержит только одно <имя таблицы>, то результатом <спецификатора отображения> будет таблица, идентифицируемая данным <именем таблицы>;

b)    если <спецификатор отображения> содержит более одного <имени таблицы>, то результатом Сспецифика-тора отображения> будет расширенное Декартово произведение идентифицируемых этими именами таблиц. Расширенное Декартово произведение R представляет собой мультинабор, включающий в себя все строки г, которые являются результатом конкатенации строк всех идентифицированных таблиц, причем порядок конкатенации определяется очередностью идентификации этих таблиц. Мощность мультинабора R представляет собой произведение мощностей идентифицированных таблиц. Порядковый номер столбца в R равен r+s, где г — порядковый номер данного столбца в именованной таблице Т, из которых о» взят, a s равно сумме числа столбцов во всех .таблицах, идентифицированных в <специ-фикаторе отображениям перед Т.

5.21 <спецификатор выборки>

Функция    «.

Задает таблицу, полученную путем применения <условия по-иска> к результату предшествующего Спецификатора отображениям    '

Формат

‘ <спецификатор выборки> : : =»

WHERE <условие поиска>

38

Страница 44

ГОСТ Р ИСО/МЭК 9076—93

Правила синтаксиса

1)    Описание результата предшествующего <спецификатора отображения> обозначим буквой Т. Каждая <спецификация столбца>, непосредственным образом заданная в <условии поиска >, должна однозначным образом указывать столбец в Т или же являться внешней ссылкой.

Примечание — Понятие «внешняя ссылка» определено в 5.7 Сспецифика-ция столбца >.

2)    <Выражение значения>, непосредственным образом заданное в <условии поиска>, не должно включать в себя ссылок на столбец, которые являются результатом функции. -

3)    Если <выражение значения>, непосредственным образом заданное в <условии поиска>, представляет собой Сспецифика-цию функции набора>, то Сспецификатор выборки> должен входить в Сспецификатор выборки групп>, а Сспецификация столбца> в <спецификации функции набора> должна являться внешней ссылкой.

Примечание — Понятие «внешняя ссылка» определено в 5.7 <специфика- ’ ция столбца>.

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

1)    Обозначим результат Сспецификатора отображения> буквой R.

2)    <условие поиска> применяется к каждой строке из R. Результатом Сспецификатор а выборки> является таблица, составленная из тех строк R, для которых Сусловие поиска> принимает значение «истина».

3)    Все <подзапрос>ы из <условия поиска> выполняются для каждой строки из R, а полученные.результаты используются при применении к данной строке R <условия поиска>. Если какой-либо из выполненных <подзапрос>ов содержит внешнюю ссылку на столбец R, то это будет ссылка на значение элемента данного столбца в.данной строке R.

Примечание — Понятие «внешняя ссылка» определено в 5.7 <специфика-ция столбца >.

5.22 Сспецификатор группировки>

Функция    '

Задает сгруппированную таблицу, полученную путем применения Сспецификатора группировки> к результату предшествующего спецификатора.    \

Формат

Сспецификатор группировки> :: =

39

Страница 45

ГОСТ Р ИСО/МЭК 9075—93

/ . * ' GROUP BY Сспёцификация столбца>

[{, С спецификация столбца>}... ]

Правила синтаксиса

1)    Описание результата предшествующего <спецификатора отображения> или же Сспецификации выборки> обозначив буквой Т.

2)    Каждая <спецификация столбца> в ^^спецификаторе груп-пировки> должна однозначным образом указывать столбец в Т. Столбец, заданный в <спецификаторе группировки>, является группирующим столбцом.

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

1)    Результат предшествующего Сспецификатора отображе-ния> или же Сспецификатора выборки> обозначим буквой R.

2)    В результате применения Сспецификатора группировки> R разбивается на набор групп. Набор включает в себя минимальное количество групп таких, что для каждого группирующего столбца во всех группах, состоящих более чем из одной строки, соблюдается условие,, что все значения группирующего столбца должны-быть идентичны.

3)    Каждая строка данной группы содержит одно и то же значение данного группирующего столбца. Если к группе применяется <условие поиска> или же Свыражение значения>, то ссылка на группирующий столбец является ссылкой на это значение.

5.23 <спецификатор выборки грулп>

Функция

Задает ограничение для сгруппированной таблицы, полученной в результате применения предшествующего Сспецификатора груп-пировки> или же Сспецификатора отображения^ которое состоит в том, что исключаются группы, не удовлетворяющие Сус-ловию поиска>.

Формат

Сспецификатор выборки групп> :: =

HAVING Сусловие поиска>

Правила синтаксиса    '

1) Описание результата предшествующего Сспецификатора отображения^ Сспецификатора выборки> или же сспецификатора группировки> обозначим буквой Т. Каждая Ссгкцифика-ция столбца>, непосредственным образом заданная в Сусловии поиска >, должна однозначным образом указывать группирующий •столбец из Т или же являться внешней ссылкой.

Страница 46

ГОСТ Р ИСО/МЭК 9075—93

Примечание — Понятие «внешняя ссылка» определено в 5.7 Сспецифнка-ция столбца >.

2) Каждая Сспецификация столбца>, которая входит в Спод-запрос> в <условии поиска> и указывает столбец в Г, должна указывать в Т группирующий столбец, в противном случае она должна задаваться посредством <спецификации функции набо-ра>.

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

1)    Результат предшествующего Сспецификатора отображе-ния>, Сспецификатора выборки> или же Сспецификатора груп-пировки> обозначим буквой R. Если этот спецификатор не является Сспецификатором группировки>, то R включает в себя единственную группу и не имеет группирующего столбца.

2)    <условие поиска> применяется к каждой группе из R. Результатом Сспецификатора выборки групп> будет сгруппированная таблица, в которую войдут те группы из R, для которых результатом <условия поиска> будет значение «истина».

3)    Когда <условие поиска> применяется к данной группе из R, то эта группа является аргументом или же источником аргументов для всех спецификаций Сспецификация функции набора>, которые непосредственным образом входят в Сусловие поиска>, если только Сспецификация столбца> в Сспецификации функции набора> не является внешней ссылкой.

Примечание — Понятие «внешняя ссылка» определено в 5.7 сспецификация столбца >.

4)    Все СподзапроОы из Сусловия поиска> выполняются для каждой группы из R, а полученные результаты используются при применении к данной группе R Сусловия поиска>. Если какой-либо из выполненных Сподзапрос>ов содержит внешнюю ссылку на столбец R, то это будет ссылка на значения данного столбца в данной группе R.

Примечание — Понятие «внешняя ссылка» определено в 5.7 сспецификация столбца >.

5.24 Сподзапрос>

Функция    ^

Задает ‘мультйнабор значений, полученных как результат Стабличного выражения>.    \

Формат    \

Сподзапррс> :: =

(SELECT [ALL | DISTINCT] Сспецификация результата>

Стабличное выражение>)

4i

Страница 47

ГОСТ Р ИСО/МЭК 9075—93

< спецификация результата > :: =

<выражение значения>    '    .

I *

Правила синтаксиса    .    ,

1)    Применимые привилегии для каждого Симени таблицы>, которое содержится в Стабличном выражении>, должны вклю-чать SELECT.

Примечание — Понятие «применимые    привилегии >» в отношении

Симени таблицы> определено в 6.10 <определение привилегий>..

2)    Возможны следующие варианты:

a)    если <спецификация результата> » задана в Спод-запросе>, который входит в любой Спредикат>, кроме <предиката существования^ то результатом <выражения над таблицами> будет таблица, состоящая из одного столбца, а <спецификация результата> будет

, эквивалентна Свыражению над значениями>, представляющему собой Сспецификацию столбца>, которая указывает единственный столбец Стабличного выражения>;

b)    если <спецификация результата> «* » задана в <подзапросе^-который входит в Спредикат существования^ то <спецификация результата> эквивалентна произвольному <выражению значения>, которое не включает в себя Сспецификации функции набора> и допустимо для использования в <подзапросе>.

3)    Значения <подзапроса> относятся к тому типу данных, к которому относится явным или неявным- образом заданное выражение значения>.

4)    Результат Стабличного выражения> обозначим буквой R.

5)    Каждая <спецификация столбца> в <выражении значения^ должна однозначным образом указывать столбец в R.

6)    Если R является сгруппированным представлением, то <спецификация результата> не должна включать в себя Сспецификацию функции набора>.

7)    Если R является сгруппированной таблицей, то каждая Сспецификация столбца> в <выражении значения> должна указывать группирующий столбец, в противном случар она должна задаваться посредством <спецификации функции набора>. Если R не является сгруппированной таблицей, а с^ыражение значения> включает в себя Сспецификацию функции набора>, то каждая Сспецификация столбца> в Свыражении значения> должна быть задана посредством Сспецификации функции на-бора>.

42

Страница 48

ГОСТ Р ИСО/МЭК 9075—93

8)    <ключевое слово> DISTINCT не должно задаваться в <подзапросе> более одного раза, за исключением случаев, когда оно задается в <подзапрос>ах, вложенных в данный С подзапросу

9)    Если <подзапрос> задан в составе <предиката сравнения^ то Стабличное выражение>‘ не должно включать в себя ни <спецификатор группировки>, ни Сспецификатор выборки групп>, кроме того оно не должно идентифицировать сгруппированное представление.

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

1)    Если R не является сгруппированной таблицей, а выражение значения> включает в себя <спецификацию функции набора >, то R представляет собой аргумент или же источник аргументов для каждой Сспецификации функции набора> из выражения значения>, а результатом <подзапроса> будет значение, заданное <выражением значения>.

2)-    Если R не является сгруппированной таблицей, а выражение значения> не включает в себя Сспецификацию функции набора>, то <выражение значения> применяется к каждой строке /?, и в результате получается мультинабор, состоящий из п значений, где п — мощность R. Если Сключевое слово> DISTINCT не задано, то результатом <подзапроса> будет мультинабор. Если же Сключевое слово> DISTINCT задано, то результатом <подзапроса> будет набор значений, полученный из мультинабора путем исключения всех избыточных дубликатных значений.

3)    Если R является сгруппированной таблицей, то Свыраже-ние значения> применяется к каждой строке R, в результате чего получается мультинабор, состоящий из п значений, где п — количество групп в R. Когда <выражение значения> применяется к данной группе из R, то эта группа представляет собой аргумент или источник аргументов для каждой <спецификации функции набора> из <выражения значения>. Если Сключевое слово> DISTINCT не задано, то результатом Сподзапроса> будет мультинабор. Если же Сключевое слово> DISTINCT задано, то результатом Сподзапроса> будет набор значений, полученный из мультинабора путем исключения всех избыточных дубликатных значений.

5.25 Сспецификация запроса>    \

Функция    \

&&ДО    ш    рсзуаътэта Стаблтггчъото выра-

жения>.

43

Страница 49

ГОСТ Р ИСО/МЭК 9075-93

Формат

{ Спецификация запроса > :: =

SELECT [ALL |DISTINCT] <список выборки> Стабличное выражение>

<список выборки> : : «•

-./ • <выражение зйачения>. [{, Свыражение значения>}...]

Правила синтаксиса \

1)    Применимые привилегии для каждого Симени таблицы>, которое содержится в Стабличном выражении>, должны включать SELECT.

Примечание — Понятие «применимые привилегии» в отношении <имени таблицы > определено в 6.10 < определение привилегий >.

2)    Результат <табличного выражения> обозначим буквой R.

3)    Число столбцов в таблице, заданной с помощью Сспецифи-кации запроса>, равно мощности <списка выборки>.

4)    Если задан <список выборки> « »», то это эквивалентно последовательности <выражений значения>, где каждое Свыра-жение значения> представляет собой <спецификацию столбца>, которая указывает столбец в R, причем каждый столбец в R может быть указан только один раз. Столбцы должны быть указаны в порядке возрастания их порядковых номеров в R.

5)    Каждая Спецификация столбца> в каждом <выражении значения> должна однозначным образом указывать столбец из R. <ключевое слово> DISTINCT не должно задаваться в Сспе-цификации запроса> более одного раза, за исключением случаев, когда оно задается в Сподзапрос>ах, входящих в эту Спецификацию запроса>.

6)    Если R является сгруппированным представлением, то Список выборки> не должен включать в себя Сспецификацию функции набора>.

7)    Если R является сгруппированной таблицей, то каждая

Сспецификация столбца> в <выражении значения> должна указывать группирующий столбец, в противном случае она должна задаваться посредством Спецификации функции набора>. Если R не является сгруппированной таблицей, а каждое выражение значения> включает в себя Сспецификацию функции на-бора>, то каждая Сспецификация столбца> в каждой Свыра-жении значения> должна быть задана посредством Спецификации функции набора>.    \

8)    Для каждого столбца таблицы, которая является р'езульта-том Сспецификации запроса>, тип данных, длина, точность и

44

Страница 50

ГОСТ Р ИСО/МЭК 9076—93

дробная,часть те же, что и для <выражения значения>, посредством которого был получен столбец.

9)    Если i-e <выражение значения> из <списка выборки> включает в себя только <спецификацию столбца >, то i-й столбец результата будет именованным столбцом, <имя столбца> которого взято из <спецификатора столбца>. В противном случае 1-й столбец будет неименованным столбцом.

10)    На столбец результирующей таблицы Сспецификации за-. проса> накладывается требование содержать только определенные значения тогда и только тогда, когда данный столбец является именованным столбцом-, на который наложено требование содержать только определенные значения.

11)    Обновление Сспецификации запроса> допускается тогда и только тогда, когда соблюдаются следующие условия:

a)    Сключевое слово> DISTINCT не задано:

b)    каждое <выражение значения> из <списка выборки> включает в себя только Сспецификацию столбца>, и ни одна <спецификация столбца> не встречается более одного раза;

c)    Сспецификатор отображения> из <табличного выра-жения> задает только одну Сссылку на таблицу>, причем эта Сссылка на таблицу> указывает на базовую или же на производную таблицу, для которых допустимо обновление;

d)    <спецификатор выборки> из <табличного выражения> не включает в себя <подзапрос>;

e)    <табличное выражение> не включает в себя ни Сспецификатор группировки>, ни Сспецификатор выборки групп>.

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

1)    Если R не является сгруппированной таблицей, а Ссписок выборки> включает в себя Сспецификатор функции набора>, то R представляет собой аргумент или же источник аргументов для каждой Сспецификации функции набора> из Сспецификации запроса>, а результатом Сспецификации запроса> будет таблица, состоящая из одной строки, i-м значением \в строке будет значение, заданное i-м С выражением значения>. *

2)    Если R не является сгруппированной таблицей, а Ссписок выборки> не включает в себя Сспецификацию функции\на6ора>, то каждое Свыражение значения> применяется к каждой строке R, и в результате получается таблица, состоящая из т строк, где т мощность R. »:й столбец таблицы будет состоять из зна-

45

Страница 51

ГОСТ Р ИСО/МЭК &075— 93

чений, полученных посредством применения i-то <выражения значения>.

*Если <ключевое слово> DISTINCT не задано, то результатом <спецификации запроса> будет такая таблица. Если же <ключевое слово> DISTINCT задано, то результатом Спецификации запроса> будет таблица, полученная из описанной путем исключения всех избыточных дубликатных строк.

3)    Если R является сгруппированной таблицей, количество групп в которой равно нулю, то результатом <спецификации зап-роса> будет пустая таблица.

4)    Если R является сгруппированной таблицей, которая состоит из одной или более групп, то каждое <выражение значениям применяется к каждой группе из R, в результате чего получается таблица, состоящая из т строк, где т — количество групп в R. 1-й столбец таблицы будет состоять из значений, полученных посредством применения i*го <выражения значения>. Когда выражение значения> применяется к данной группе из R, то эта группа становится аргументом или же источником аргументов для каждой Спецификации функции набора> из <выражения значения^ Если <ключевое слово> DISTINCT не задано, то результатом Спецификации запроса> будет такая таблица. Если же Сключевое слово> DISTINCT задано, то результатом Спецификации запроса> будет таблица, полученная из описанной путем исключения всех избыточных дубликатных строк.

5)    Строка считается дубликатной по отношению к другой строке тогда и только тогда, когда значения в каждой паре элементов с одним и тем же порядковым номером будут идентичными.

6 ЯЗЫК ОПРЕДЕЛЕНИЯ СХЕМЫ

6.1 <схема>

Функция

Определяет Схему>.

Формат

<схема> :: =

CREATE SCHEMA Спецификатор полномочий схемы>

[<элемент схемы> ...]    \

Спецификатор полномочий схемы> :: — N    \

AUTORIZATION <идентификатор полномочий схемы>

46

Страница 52

ГОСТ Р ИСО/МЭК 907S-93

<идентификатор полномочий схемы> :: =

<идентификатор полномочий>

Сэлемент схемы> :: =

<определение таблицы>

J <определение представления>

| <определение привилегий>

Правила синтаксиса

1) В одной и той же среде <идентификатор полномочий схе-мы> одной <схемы> должен отличаться от <идентификатора полномочий схемы> любой другой <схемы>. Понятие среды определяется разработчиком реализации.

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

Не имеется.

6.2 Сопределение таблицы>

Функция

Определяет базовую таблицу.

Формат

<определение таблицы> :: =

CREATE TABLE <имя таблйцы>

(Сэлемент таблицы>[{, <элемент таблицы>}...])

Олемент таблицы> :: =

<определение столбца>

| Сопределение ограничений для таблиц> -

Правила синтаксиса

1)    Если <имя таблицы> включает в себя <идентификатор полномочий>, то этот <идентификатор полномочий> должен совпадать с <идентификатором полномочий схемы> той <схемы>, в которой определена таблица.

2)    В пределах <схемы> <имя таблнцы> не должно совпадать с <именем таблицы> из любого другого Сопределения таб-лицы> или <определения представления>.

3)    Сопределение таблицы> должно включать в себя по крайней мере одно Сопределение столбца>.

4)    Контекстом Симени таблицы> является -^определение таблицы>.

5)    Описание таблицы, заданное посредством СОпределения таблицы>, включает в себя <имя таблицы> и описания столбцов, каждое из которых задается посредством СоЬределения столбца>. i-e Сопределение столбца > представляет собой описание /-го столбца.

47

Страница 53

7

ГОСТ Р ИСО/МЭК 9076-93

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

1) <определение таблицы> определяет базовую таблицу.

6.3 Сопределенне столбца>

Функция

Определяет столбец таблицы.

Формат

• <определение столбца> :: =

<имя столбца> <тип данных>

(<спецификатор умолчания>1 <ограничение для столбца >J

Сфграничение для столбца> :: =

NOT NULL [Сспецификация уникальности>]

| <спецификация ссылок>

|CHECK (<условие поиска>)

Правила синтаксиса

1)    В пределах Сопределения таблицы> <имя столбЦа> не должно совпадать с Сименем столбца> из любого другого Соп-ределения столбца>.

2)    i-й столбец таблицы описывается i-m <определением столб-ца> в Сопределении таблицы>. Имя столбца и тип его данных задаются, соответственно, Сименем столбца> и Стипом данных^

3)    <имя столбца> в Сопределении столбца> обозначим буквой С.

4)    Если задано NOT NULL, то таким образом будет неявно задано следующее Сопределенне проверки ограничений^:

CHECK (С IS NOT NULL)

5)    Если NOT NULL не задано, а также не задан Сспецифика-тор умолчания>, то неявно заданным Сспецификатором умолча-ния> будет DEFAULT NULL.

6)    Если задана Сспецификация уникальности>, то таким образом будет неявно задано следующее Сопределенне ограничения уникальности>:

Сспецификация уникальности> (С)

Примечание — Определение < спецификации уникальности > ^ано в 6.6 Сопределенне ограничения уникальности>.    \

7)    Если задана Сспецификация ссылок>, то таким' образом будет неявно задано следующее Сопределенне ограничения на ссылки>:

FOREIGN KEY (С) Сспецификация ссылок>

Страница 54

ГОСТ Р ИСО/МЭК 9075—93

Примечание — Определение <спецификации ссылок> дано в 6.7 < определение ограничения на ссылки >.

8)    Если задано CHECK, то каждая Сспецификация столбца> в <условки поиска> должна указывать столбец С, и таким образом будет неявно задано следующее Сопределение проверки ограничения>:

CHECK (<условие поиска>)

9)    Описание столбца, определяемое Сопределением столбца>, включает в себя имя, которое задается <именем столбца>, и тип данных, который задается <типом данных>.

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

Не имеется.

6.4 <спецификатор умолчания>

Функция

Устанавливает умолчания, принятые для <определения столб-ца>.

Формат

<спецификатор умолчания> :: =

DEFAULT {<литерал> | USER | NULL}

Правила синтаксиса

1)    Обусловленным Стипом данных> для <спецификатора" умолчания> является <тип данных> того <определения столбцах в котором содержится этот <спецификатор умолчания>.

2)    Возможны следующие варианты:

a)    если задан <литерал>:

—    если обусловленный <тип данных> является строковым типом, то <литерал> должен быть <строковым литера-лом>. Длина <строкового литерала> не должна превышать <длину> обусловленного <типа данных>;

—    если обусловленный <тип данных> является точным числовым типом, то <литерал> должен быть <точным числовым литералом>, при этом обусловленный <тип данных> должен давать возможность представить значение, заданное <точным числовым литер^лом>, без потери значащих разрядов;

—    если обусловленный <тип данных> является приближенным числовым типом, то <литерал> должен быть <приближенным числовым литералом> или же <точ-ным числовым литералом>;

b)    если задано USER, то обусловленный <тип данных> является строковым типом, <длина> обусловленного

49

Страница 55

ГОСТ Р ИСО/МЭК 9075-93

Стипа данных> должна быть больше или равна 18;

с) если задано NULL, то Сопределение столбца>т в котором содержится Спецификатор умолчания>, не должно включать в себя NOT NULL.

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

1) Когда в таблицу, заданную Сопределением таблицы>, производится вставка строки, то инициализация столбца, заданного Сопределением столбца>, будет выполняться следующим образом:

a)    если в Сопределении столбца> Сспецификатор умолча-ния> не задан или же явным или неявным образом задан <спецификатор умолчания> вида NULL, то столбец инициализируется как содержащий неопределенное значение;

b)    если в Сопределении столбца> задан Сспецификатор умолчания>, который содержит Слитерал>, то возможны следующие варианты:

—    если в Сопределении столбца> Стип данных> задает точный числовой или же приближенный числовой тип, то столбец инициализируется как содержащий числовое значение Слитерала>;

—    если в Сопределении столбца> Стип данных> задает строку символов, длина которой равна длине Слитера-ла>, то столбец инициализируется как содержащий зна-

‘ чение Слитерала>;

—    если в Сопределении столбца> Стип данных> задает строку символов, длина которой превышает длину Сли-терала>, то столбец инициализируется как содержащий значение Слитерала>, дополненное справа необходимым количеством пробелов до той длины, которая задается С типом данных>;

c)    если в Сопределении столбца> задан Сспецификатор умолчания> вида USER, то столбец инициализируется как содержащий значение, задаваемое Сспецификацией значения> USER, дополненное справа необходимым количеством пробелов до той длины, которая соответствует Стипуданных> из Сопределении столбца>. \

6.5 Сопределение ограничений для таблиц>    \

Функция

Задает ограничение целостности.

50

Страница 56

ГОСТ Р ИСО/МЭК 9075—9&

Формат

<определение ограничений для таблиц> :: =

<определение ограничения уникальности >

| <определение ограничения на ссылки>

. I Сопределение проверки ограничений>

Правила синтаксиса    '—

Не имеется.

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

1) После выполнения каждого <SQL>onepaTopa> контролируется соблюдение требований, заданных <определением ограничений для таблиц>.

6.6 <определение ограничения уникальности>

Функция

Задает ограничение уникальности для таблицы.

Формат

<определение ограничения уникальности> :: = <спецификация уникальности> (<список уникальных

столбцов>)

<спецификация уникальности> :: =

UNIQUE | PRIMARY KEY <список уникальных столбцов> :: =

<имя столбца> [{, <имя столбца>}...]

Правила синтаксиса

1)    Таблицу, для которой задаются ограничения, обозначим буквой Т.

2)    Каждое <имя столбца> из <списка уникальных столбцов> должно идентифицировать столбец в 7*, причем один и тот же столбец не должен идентифицироваться более одного раза.

3)    В <определении столбца> для каждого <имени столбца> из <списка уникальных столбцов> должно быть задано NOT NULL.

4)    В <определении таблицы> не должно задаваться как в явной, так и в неявной форме более одного Сопределения ограничения уникальности>, содержащего спецификацию PRIMARY KEY.

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

1) Столбец, имя которого идентифицировано посредством Симени столбца>, внесенного в Ссписок уникальных столбцов>, будем называть «обозначенным столбцом:».

'    51

Страница 57

ГОСТ Р ИСО/МЭК 9075-93

2) Ограничение, которое накладывается на Т, состоит в том, что Т не должна содержать дубликатных строк, причем дубликат-ность строк определяется только по тем элементам, которые относятся к обозначенным столбцам. Две строки считаются дубликатными в том случае, когда значение элемента каждого обозначенного столбца в одной строке равно значению соответствующего элемента во второй строке. После выполнения каждого SQL-оператора контролируется соблюдение данного требования.

6.7 <определение ограничения на ссылки>

Функция

Задает ограничения на ссылки.    \

Формат

<определение ограничения на ссылки> :: =

FOREIGN KEY (<обращающиеся столбцы>)

< спецификация ссылок>

Сспецификация ссылок> :: =

REFERENCES <таблица и столбцы, к которым обращаются>

Собращающиеся столбцы> :: =

<перечень столбцов ссылок>

<таблица и столбцы, к которым обращаются> :: =

<имя таблицы> [(<перечень столбцов ссылок>)]

< перечень столбцов ссылок> :: =

<имя столбца> [{, <имя столбца>}...]

Правила синтаксиса

1)    Пусть «обращающаяся таблица» означает содержательную таблицу. Пусть «таблица, к которой обращаются» означает таблицу, идентифицированную Сименем таблицы> в Стаблице и столбцах, к которым обращаются>. Пусть «обращающиеся столбцы» означают столбцы, идентифицированные <перечнем столбцов ссылок> в Совращающихся столбцах>.

2)    Возможны следующие варианты:

а) . Если Стаблица и столбцы, к которым обращаются> задает <имя столбца> или .<перечень столбцов ссылок>, то это <имя столбца> или Сперечень столбцов ссы-лок> должны быть идентичными Ссписку уникальных столбцов> в <определении ограничения уник#льности> таблицы, к которой обращаются. Пусть «столбцы, к которым обращаются», обозначают столбцы, идентифицированные этим Сименем столбца> или Сперечнем столбца ссылок>.-

Страница 58

ГОСТ Р ИСО/МЭК 9075-93

Ь) Если <таблица и столбец, к которым обращаются> не задают <имя столбца> или <перечень столбцов ссылок^ то <определение таблицы> для таблицы, к которой обращаются, будет содержать <определение ограничения уникальности>, которое задает PRIMARY KEY. Пусть «столбцы, к которым обращаются» обозначают столбцы, идентифицированные <перечнем уникальных столбцов> в этом <определении ограничения уни-кал ьности>.

3)    Применимые <привилегии> для <имени таблицы> должны включать REFERENCES для каждого столбца, к которому обращаются.

Примечание — «Применимые < привилегии >» для <имени таблицы!> определены в 6.10 «< определение привилегий >».

4)    Таблица, к которой обращаются, должна быть базовой.

5)    Каждый обращающийся столбец должен идентифицировать столбец обращающейся таблицы, и одно и то же имя столбца не должно идентифицироваться более одного раза. Каждый столбец, к которому обращаются, должен идентифицировать столбец таблицы, к которой обращаются, и одно и то же имя столбца не должно идентифицироваться более одного раза.

6)    СОбращающиеся столбцы> должны содержать то же самое количество имен столбцов, что и <таблица и столбцы, к которым обращаются>. i'-й столбец, идентифицированный в Собра-щающихся столбцах>, соответствует /-му столбцу, идентифицированному в <таблице и столбцах, к которым обращаются>. Тип данных каждого обращающегося столбца должен быть таким же, как и тип данных соответствующего столбца, к которому обращаются.

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

1) Обращающаяся таблица и таблица, к которой обращаются, удовлетворяют Сопределению ограничения на ссылки>, если и только если для каждой строки в обращающейся таблице либо:

a)    все обращающиеся столбцы в строке содержат ненулевые значения, и в таблице, к которой обращаются, существует строка такая, что для каждого обращающегося столбца значение обращающегося столбца равно значению соответствующего столбца, к которому обращаются; или

b)    какой-то обращающийся столбец в строке содержит нулевое значение.

53,

Страница 59

ГОСТ Р ИСО/МЭК 9075—93

6.8    Сопределение ограничения проверки>

Функция

Задает условия для таблицы.

Ф<эрмат

^определение ограничения проверки > :: ='

CHECK (<условие поиска>)

Правила синтаксиса

1)    < Условие поиска> не должно содержать <подзапрос>, <спецификацию функций набора> или Спецификацию цели>.

2)    Каждая Спецификация столбца> в <условии поиска> должна ссылаться на столбец, определенный в содержащем ^определении таблицы>.

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

1) База данных не удовлетворяет Сопределению ограничения проверки> тогда и только тогда, когда таблица, определенная содержащим <определением таблицы>, содержит строку, для конторой <условие поиска> ложно.

6.9    <определение представления >

Функция

Определение представляемой таблицы..

Формат

<определение представления > :: =

CREATE VIEW <имя таблицы>

[(Сперечень столбцов представления^-)]

AS <спецификации запроса>

[WITH CHECK OPTION]

< перечень столбцов представления> :: =

<и.чя столбца> [{, <имя столбца> ...}]

Правила синтаксиса

1)    Если <имя таблицы> содержит <идентификатор полномочий;^ то этот <идентификатор полномочий> должен быть таким же, как и Сидентификатор полномочий схемы> в содержащей <схеме>.

2)    <Имя таблицы> должно.отличаться от <имени .таблицы>

любого другого Сопределения представления> или <определения таблицы> в содержащей <схеме>.    \.

3)    Если <спецификация запроса> является корректируемой, то представляемая таблица является корректируемой таблицей. В противном случае это только считываемая таблица.

4)    Если любые два столбца в таблице, заданной с помощью Спецификации запроса>, имеют одинаковое <имя столбца>,

5*

Страница 60

1

ГОСТ Р ИСО/МЭК 9075—93

или если любой столбец этой таблицы является непоименованным столбцом, то необходимо задать < перечень столбцов представле-ния>.

5)    Одно и то же <имя столбца> не должно задаваться более чем один раз в <перечне столбцов представлениям

6)    Количество <имен столбцов> в <перечне столбцов пред-ставления> должно быть таким же, как и порядок таблицы, заданной с помощью Сспецификации запроса>.

7)    Описание таблицы, определенной <определением представ-ления>, включает в себя имя <имя таблицы> и описания столбцов в таблице, заданной Сспецификацией запроса>. Если задан <перечень столбцов представления>, то имя го столбца является i-м <именем столбца> в этом Сперечне столбцов представления >.

8)    Если <спеиификация запроса> содержит Сспецификатор группировки> или Сспецификатор выборки групп>, который не содержится в <подзапросе>, то представляемая таблица, определенная <определением представления^ является группированным представлением.

9)    Если задано WITH CHECK OPTION, то представляемая таблица должна быть корректируемой.

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

1)    <Определение представления> определяет представляемую таблицу. Представляемая таблица V является таблицей, которая получится при выполнении Сспецификации запроса>. Материализуется ли представляемая таблица, определяется разработчиком.

2)    Если V корректируема, то пусть Т обозначает таблицу, идентифицированную Сименем таблицы>, заданным Сспецифи-катором отображения> в Сспецификации запроса>. Для каждой строки в V существует соответствующая строка в Т, из которой получается эта строка V. Для каждого столбца в V существует соответствующий столбец в Т, из которого можно вывести столбец таблицы V. Вставка строки в V является вставкой соответствующей строки в Т. Удаление строки из V является удалением соответствующей строки из Т. Корректирование столбца строки в V является корректированием соответствующей строки в Т.

.3) Возможны следующие варианты:    \

а) Если задано WITH CHECK OPTION, и Сспецификация запроса> задает Сспецификатор выборки>, то Сопе-ратор вставки>, СоператОр корректировки: по положению^ или Соператор корректировки: поиск> для данного представления не должны приводить к образова*

55

Страница 61

ГОСТ Р ИСО/МЭК 9075-93

нию строки, для которой этот <спецификатор выборки> является ложным Ь) Если WITH CHECK OPTION не задано, то Сопределе-ние представления> не должно ограничивать данные, которые могут быть вставлены в корректируемую представляемую таблицу.

Примечание — Общие правила 2 в 8.7, «Соператор вставки>», 5 в 8.11, «Соператор корректировки: по положению>» и 4 в 8.12, «Соператор корректировки: поиск>».

6.10 <определение прнвилегий>

Функция

Определяет привилегии.

Формат

Сопределение привилегий> :: =

GRANT <привилегии> ON <имя таблицы>

ТО <получатель привилегий> [{, <получатель привилегий>}...]

{WITH GRANT OPTION]

<привилегии> :: =

ALL PRIVILEGES |<операция> [{, <операция>}...]

<операция> :: =»

SELECT | INSERT | DELETE

I UPDATE [(<перечень столбцов предоставления привиле-гий> )J

|REFERENCES [(<перечень столбцов предоставления при-вилегий>)]

<перечень столбцов предоставления привилегий> :: =

<имя столбца> [{, <имя столбца>}...] <получатель привилегий> :: =

PUBLIC | <идентификатор полномочий>

Правила синтаксиса

1)    Пусть Т обозначает таблицу, идентифицированную <име-нем таблицы>. <Привилегии> задают одну или более привилегий для Т.

2)    UPDATE (<перечень столбцов предоставлений привилегий^ задает .привилегию UPDATE для каждого столбца таблицы Т, заданного в <перечне столбцов предоставления \ привиле-гий>. Каждое <имя столбца> в <перечне столбцов предоставления привилегий>должно идентифицировать столбец в Т. Если •Сперечень столбцов предоставления привилегий> опущен, то UPDATE задает привилегии UPDATE на всех столбцах Т.

56

Страница 62

ГОСТ Р ИСО/МЭК 9075-93

3)    REFERENCES (<перечень столбцов предоставления привилегий^ определяют привилегию REFERENCES для каждого столбца таблицы Т, идентифицированного в <перечне столбцов предоставления привилегий>. Каждое <имя столбца> в <перечне столбцов предоставления> должно идентифицировать столбец в Т: Если <перечень столбцов предоставления привилегий> опущен, то REFERENCES задает привилегию REFERENCES для всех столбцов таблицы Т.

4)    Применимые <привилегйи> для ссылки на <имя табли-цы> определяются следующим образом:

a)    Возможны следующие варианты:

—    Если существование Симени таблицы> содержится в <схеме>, то пусть применимый <идентификатор полно-мочий> будет <идентификатором полномочий>, заданным в качестве <идентификатора полномочий схемы> в <схеме>.

—    Если существование <имени таблицы> содержится в <модуле>, то пусть применимый <идентификатор пол-номочий> будет «^идентификатором полномочий>, заданным в виде <модульного идентификатора полномочий > в <модуле>.

b)    В случае:

—    Если применимый <идентификатор полномочий> тот же, что и <идентификатор полномочий>, явно или неявно заданный в <имени таблицы>, то:

Возможны следующие варианты:

1.    Если Т — базовая таблица, то применимыми <при-вилегиями> являются INSERT, SELECT, UPDATE,

DELETE, и REFERENCES, и эти <привилегии> предоставляются.

2.    Если Т—представляемая таблица, которая не яв

ляется корректируемой, то применимыми <привилегиями^ есть SELECT, и эта привилегия может быть предоставлена, если и только если применимые привилегии SELECT по всем Сименам таблиц>, содержащихся в <спецификации запроса>, являются предо-ставимыми.    \

3.    Если Т является представляемой таблице#, которая может корректироваться, то применимые <привиле-гии> на Т являются применимыми <привилегиями>, за исключением REFERENCES на <имя таблицы>

Страница 63

ГОСТ Р ИСО/МЭК 9075-93

Т2, заданное в Сспецнфикаторе отображения> <спе-цификации запроса >. Привилегия может быть предоставлена Т тогда и только тогда, когда она может быть предоставлена Т2.

— Если применимый <идентификатор полномочий> не такой же, как Идентификатор полномочий>, явно или неявно заданный в <имени таблицы>, то применимое <определение привилегий> состоит из всех <определений привилегий>, чье <имя таблицы> такое же, как и данное <имя таблицы>, и чьи Сполу-чатели привилегий> либо содержат применимый < идентификатор    полномочий>, либо содержат

PUBLIC, и применимые <привилегии> состоят из всех <привилегий>, заданных в применимых Сопре-делениях привилегий>. Привилегия предоставима тогда и только тогда, когда она задана в <привилегиях> некоторого применимого <определения привилегий>, которое задает WITH GRANT OPTION и применимый Сидентификатор полномочий>.

5)    ALL эквивалентно перечню <операцнй>, который включает в себя все применимые <привилегии> для <имени таблицы>.

6)    Применимые <привилегии> для <имени таблицы> Сопределения прнвилегий> должны включать в себя <привилегии>, заданные в Сопределении привилегий >.

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

Нет.

7 МОДУЛЬНЫЙ язык

7.1 <модуль>

Функция

Определяет модуль.

Формат

<модуль> :: =

Сспецификатор имени модуля>

Сспецификатор языка>

<спецификатор полномочий модуля> , [■Собъявить курсор> ...]

. <процедура> ...    \

<спецификатор языка> :: =

LANGUAGE {COBOL | FORTRAN | PASCAL | PL1)

<спецификатор> :: =

AUTHORIZATION «^идентификатор полномочий модуля>

\

Страница 64

ГОСТ Р ИСО/МЭК 9075-93

<идентификатор полномочий модуля> :: =

<идентификатор полномочий>

Правила синтаксиса

1)    Для каждого Собъявления курсора> в <модуле> должна быть точно одна <процедура> в этом <модуле>» которая содержит Соператор открытия>, который задает <имя курсо-ра>, объявленное в <объявлении курсора>.

2)    <Модуль> должен быть связан с прикладной программой во время его выполнения. Прикладная программа должна быть связана не более чем с одним <модулем>.

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

1)    Если Сспецификатор языка> в <модуле> задает COBOL (соответственно FORTRAN, PASCAL, PL1) и если фактор, выполняющий вызов <процедуры> в этом <модуле>, не является стандартной программой COBOL (соответственно стандартным FORTRAN, PASCAL, PL1), то результаты оказываются неопределенными.

2)    После последнего раза, когда фактор языка программирования осуществляет вызов <процедуры> в <модуле>, неявно выполняется Соператор блокировки> или Соператор возврата>. Выбор того, какой из этих Соператоров SQL> выполнять, определяется разработчиком. Если произошла неустранимая ошибка, то DBMS должен выполнять Соператор возврата>.

7.2    Сспецификатор имени модуля >

Функция

Именование Смодуля>.

Формат

Сспецификатор имени модуля> :: —

MODULE [С им я модул я>]

Правила синтаксиса

1) С Имя модуля> должно отличаться от С имени модуля > любого другого С модул я > в той же среде. Понятие среды определяет разработчик.

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

1) ССпецификатор имени модуля> определяет произвольный С идентификатор >, который будет С именем модуля^, обозначающим содержащий Смодуль> в данной среде. v

7.3    С процедура >

Функция

Определяет процедуру и оператор SQL.

59

Страница 65

ГОСТ Р ИСО/МЭК 9075—93 Формат

Спроцедура> :: =,

PROCEDURE <имя процедуры> <обявление параметра;»..,; /

<оператор SQL>;

<объявление параметра > :: =

<имя параметра> <тип данных>

|<параметр SQLCODE>

<параметр SQLCODE> :: =

SQLCODE <оператор SQL> :: =

Соператор закрытия>

<оператор блокировки>

<оператор удаления: по положению>

Соператор удаления: поиск>

Соператор выборки>

Соператор вставки>

Соператор открытия>

Соператор отката>

Соператор выбора >

Соператор коррекции: по положении»

Соператор коррекции: поиск>

Правила синтаксиса

1)    СИмя процедуры> должно отличаться от С имени про-цедуры> любой другой Спроцедуры> в содержащем Смодуле>.

2)    СИмя параметра> каждого Собъявления параметра^ в Спроцедуре> должно отличаться от Симени параметра> любого другого Собъявления параметра> в этой Спроцедуре>.

3)    Любое Симя параметра>, содержащееся в Соператоре SQL> Спроцедуры>, должно быть задано в Собъявлении пара-метра> в этой Спроцедуре>.

4)    Если Симя столбца> в Соператоре SQL> идентично Симени параметра> в Собъявлении параметра> Спроцедуры>, содержащей Соператор SQL>, то Сспецификация столбца >, которая содержит Симя столбца>, должно содержать Спрефикс>.

5)    Достоверный вызов Спроцедуры> должен предоставить п параметров, где п — число Собъявлений параметра;» в Спро-цедуре>.

6)    СПроцедура> должна содержать точно один Спараметр

SQLCODE>. Параметр, соответствующий Спараметру SQLCO-DE>, называется параметром SQLCODE.    •

7)    Подлежащим Сспецификатора языка> в Спроцедуре> является Сспецификатор языка> содержащего Смодуля>.

Страница 66

ГОСТ Р ИСО/МЭК W75--9S

8) Возможны следующие варианты:

a)    Если подлежащее Сспецификатор языка> задает COBOL, то:

*— Типом параметра' SQLCODE должен быть использован шаблон КОБОЛ a COMPUTATIONAL S9(PC), где PC — задаваемая разработчиком точность, которая больше или равна 4.

—    Любой <тип данных> в Собъявлении параметра> должен задавать либо CHARACTER, либо NUMERIC.

—    Если i-e <объявление параметра> задает <тип дан-ных>, который является CHARACTER (L) для некоторой <длины> L, то тип i-ro параметра должен быть буквенно-цифровым КОБОЛа с длиной L.

—    Если i-e <объявление параметра> задает <тип дан-ных>, который является NUMERIC (Р, 5) для некоторой <точности> и <масштаба> Р и S, то тип i-ro параметра должен быть с использованием КОБОЛа DISPLAY SIGN LEADING SEPARATE с последующим PICTURE.

Возможны следующие варианты:

1.    Если S=P, то за PICTURE с «S» следует «V*, за которым следует Р «9».

2.    Если P>S>0, то за PICTURE с «S» следует Р—S «9», за ним «У», и S «9».

3.    Если S —О, то за PICTURE с «S» следует Р «9» и за ним следует «V».

b)    Если подлежащее Сспецификатора языка> задает FORTRAN, то:

—    Тип параметра SQLCODE должен быть INTEGER ФОРТРАНа.

—    Любой <тип данных> в <объявлении параметра> должен задавать либо CHARACTER, INTEGER, REAL или DOUBLE PRECISION.

—    Если i-e <объявление параметра> задает <тип дан-ных>, который является CHARACTER (L) для .некоторой <длины> L, то типом i-ro параметра должен быть CHARACTER ФОРТРАНа с длиной I. , •

—    Если i-e <объявление параметра> задает <тип дан: ных>, который является INTEGER, REAL или DOUBLE PRECISION, то типом i-ro параметра должны быть' соответственно тип ФОРТРАНа INTEGER, REAL или DOUBLE PRECISION, ~

t) Если подлежащее Сспецификатора языка> задает PASCAL, то:

3 За*. 1649

61*

Страница 67

roet £ ИСО/МЭК 9076—93

—    Типом параметра SQLCODE должен быть INTEGER языка ПАСКАЛЬ.

—    Любой <тип данных> в Собъявлении параметра> должен задавать CHARACTER. INTEGER или REAL.

—    Если i-e <объявление параметра> задает <тип дан-ных>, который является CHARACTER (L) для некоторой <длины> L, то типом i-го параметра должна быть» строка ПАСКАЛя с длиной L.

—    Если t-e <объявление параметра> задает <тип дан-ных>, который является INTEGER или REAL, то типом t-го параметра должны быть соответственно в ПАСКАЛе INTEGER или REAL.

d) Если подлежащее Сспецификатора языка> задает PL1>( то:

—    Тип параметра SQLCODE должен быть тип ПЛ/1 FIXED BINARY (РР), где РР — задаваемая разработчиком точность, которая превышает или равна 15.

—    Любой <тип данных> в Собъявлении параметра> должен задавать либо CHARACTER, DECIMAL, либо FLOAT.

—    Если i-e Собъявленйе параметра> задает <тип дан--ных>, который является CHARACTER (L) для некоторой <длины> L, то типом /-го параметра должен быть тип ПЛ/1 CHARACTER с длиной L.

—    Если i-e Собъявленйе параметра> задает Стип данных^ являющийся DECIMAL (Р, S) для некоторой Сточности> и Смасштаба> Р и S, то типом i-го параметра должен быть тип ПЛ/1 FIXED REAL, DECIMAL (P,S).

—    Если i-e Собъявленйе параметра> задает Стип дан-ных>, являющийся FLOAT (Р), для некоторой Сточ-ности> Р, то типом i-ro параметра должен быть тип ПЛ/1 FLOAT REAL BINARY (Р).

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

1)    < Процедура >► обозначает процедуру, которую можно вызвать с помощью установленного разработчиком средства.

2)    Когда < процедура > вызывается средством языка программирования;    \

а) Еели нет активных транзакций для этого средства, то-производится эффективная инициализация трайзакции и ее связывание е этим вызовом ц с последующими вызовами с помощью данного средства любых других С про-

Страница 68

ГОСТ Р ИСОУМЭК 9075-Л

цёдур> в содержащем их <модуле> до тех пор, пока посредник не закончит эту транзакцию.

Ь) Соператор SQL> <процедуры> выполняется.

3) Возможны следующие варианты:

a)    Если S успешно выполняется, то возможны следующие варианты:

—    Если S — <оператор выборки>, для которого следующей строки не существует, то параметр SQLCODE полагают равным 100.

—    Если S — Соператор вставки>, для которого нет кандидатуры строки, то параметр SQLCODE полагают равным 100.

—    Если 5 — Соператор выборки>, результатом которого была пустая таблица, то параметр SQLCODE полагают равным 100.

—    Если S — Соператор корректировки: поиск> или Соператор удаления: поиск>, для которых не было выходной-строки для корректировки или удаления, то параметр' SQLCODE полагают равным 100.

—    В прочих случаях параметр SQLCODE устанавливается равным 0.

b)    Если S не выполнено успешно, то:

—    Все изменения, произведенные над базой данных при выполнении S, исключаются.

—    Параметр SQLCODE приобретает отрицательное число-вое значение по определению разработчика.

8 ЯЗЫК МАНИПУЛИРОВАНИЯ ДАННЫМИ

8.1 Со'ператор закрытия>

Функция    |

Закрытие курсора.

Формат

Соператор закрытия> :: —

CLOSE С имя курсора>

Правила синтаксиса    .

1) Содержащий Смодуль> должен содержать СобъявАение юурсора> CR, для которого С имя курсорц> такое же, кйк я Симя курсора> в Соператоре закрытия>.

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

О Курсор CR должен быть в открытом состоянии.

63

Страница 69

сТОСГ P ИСО/МЭК 9076—93

2) Курсор CR помещается в закрытом состоянии, и копия .Сспецификации курсора> CR уничтожается.

8.2 <оператор блокировки>

Функция

Окончание текущей транзакции фиксацией изменений.

Формат

< оператор блокировки> :: —

COMMIT WORK Правила синтаксиса Нет.

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

1)    Текущая транзакция заканчивается.

2)    Любые курсоры, которые были открыты текущей транзакцией, закрываются.

3)    Любые изменения в базе данных, которые были произведены текущей транзакцией, фиксируются.

i 8.3 Собъявление курсора>

Функция

Определение курсора.

Формат

Собъявление курсора> :: =

DECLARE <имя.курсора> CURSOR FOR <спецификация курсора>

<спецификация курсора> =    •    »

<выражение запроса> [<спецификатор порядка>] , <выражение запроса> :: =    .

<элемент запроса>    ч    ■:    1

|<выраженнезапроса> UNION [ALL] <элемент -^:-. запроса>    .!... ,

С элемент запроса> :: =    4t!-

Сспецификация запроса> | (<выражение запроса>) Сспецификатор порядка> :: =    -

ORDER BY <спецификация упорядочения?»

[{, <спецификация упорядочения;»} »< .1 .■

- <спецификация упорядочения?» :: =    V    * ■

> {<беззнаковое целоё> | Сспецификация столбца>}

[ASС | DESC]

Правила синтаксиса    .Г'7г

1) <Имя курсора> не должно быть идентичным <имени кур-

Страница 70

ГОСТ Р ИСО/МЭК 9076—&

сора>, заданному в любом другом Собъявлении курсора> в одном и том же <модуле>.

2)    Любое <имя параметра>, содержащееся в Сспецифика* дин курсора>, должно быть определено в Собъявлении параметра > в <процедуре> в содержащем Смодуле>, который содержит <оператор открытия>, задающий Симя курсора>.

Примечание — Смотри Правила синтаксиса в 7.1, «<иодуль>».

3)    Пусть Т обозначает таблицу, заданную <спецификацией курсора>.

4)    Возможны следующие варианты:

, а) Если задан ORDER BY, то Т является только считываемой таблицей с заданным порядком упорядочения.

b)    Если не задано ни ORDER BY, ни UNION, и Сспеци-фикация запроса> корректируема, то Т является корректируемой таблицей.

c)    В других случаях Т является только считываемой таблицей.

5)    Возможны следующие варианты:

a)    Если UNION не задан, то описание Т является описанием <спецификации запроса>.

b)    Если задан UNION, то для каждого заданного UNION пусть Т1 и Т2 обозначают таблицы, заданные <выражением запроса> и <элементом запроса>. СПеречни выбора> для спецификаций 77 и Т2 должны состоять из « или <спецификаций столбцов>. За исключением имен столбцов, описания 77 и Т2 должны быть идентичными. Все столбцы результата являются непоименованными. За исключением <имен столбцов>, описание результата такое же, как и описания 77 и Т2.

6)    Если задан ORDER BY, то каждая <спецификация упоря-дочения> в Сспецификаторе порядка> должна идентифицировать столбец Т. Возможны следующие варианты:

a)    Если Сспецификация упорядочения> содержит Сспе-цификацию столбца>, то <спецификация упорядоче* ния> идентифицирует столбец таблицы Т с именем, заданным этой <спецификацией столбца>. . V

b)    Если сспецификация упорядочения> содержите целое без знака>, то Сцелое без знака> должно быть больше 0, но не больше степени R. С Спецификация упора-дочения> идентифицирует столбец Т с положением п* порядку, заданным <целым без Знака

<0

Страница 71

fOCT P ИСО/МЭК 9076-93

• *■

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

J) Возможны следующие варианты:

.. а) Если Т является корректируемой таблицей, то курсор , \    связан    с    поименованной таблицей, идентифицированной

<именем таблицы> в < спецификаторе отображения^. Пусть В обозначает эту поименованную таблицу. Для каждой строки в Т существует соответствующая строка в В, из которой выводится строка в Т. Когда курсор располагается на строке в Г, то курсор также располагается на соответствующей строке в В.

Ъ) Во всех других случаях курсор не связан с поименованной таблицей.

2) Возможны следующие варианты:

л) Если не задан UNION, то Т является результатом заданной Сспецификации запроса>.

Ь) Если UNION задан, то для каждого UNION, который задан, пусть 77 и Т2 будут результатом <выражения запроса> и <элемента запроса>. Результат UNION эффективно выводится следующим образом:

—    задается результат в пустую таблицу;

каждая строка 77 и каждая строка Т2 вставляются в этот результат;    .    ,г    ,    4

к — если не задано ALL, то исключаются любые избыточные и; дублированные строки из результата. л 3) Возможны следующие варианты:

.. .;    а)    Если не задан    ORDER BY, то:

•и'.;*    —    упорядочение    строк в Т задается разработчиком;

. , .ч.    4—    упорядочение    строк в Т может изменяться между    тран-

•V • .• '.-л*' |закциями;

•    —    упорядочение    Строк в Т, когда курсор открыт, будет    та

ким же в следующий момент после открытия курсора в '1чЦО;)\ : этой же транзакции, при условии, что:

1 Не было принудительных изменений в любой таблице, опрашиваемой в Сспецификации курсора>.

.s„, •    •    2 Упорядоченный набор значений параметров, предо-

ставленный для <процедуры>, содержащей <опера-тор открытия>, одинаков в обоих случаях. Если эти условия не соблюдаются, то упорядочение строк в Т может отличаться в последовательных открытиях кур-*Н):' •? сора в рамках одной и той же транзакции. '

Ь) Если задан ORDER BY, то Т имеет упорядоченный по-цу *'    • рядок: ■    '

—    Упорядоченный порядок является последовательностью

Страница 72

ГОСТ Р ИСО/М9К 9075—93

упорядоченных групп. Упорядоченная группа представляет собой последовательность строк, в которых все значения упооядоченного столбца идентичны. Кроме того, упорядоченная группа может быть последовательностью упорядоченных групп.

—    Количество элементов в последовательности и положение по порядку каждой упорядоченной группы определяется значениями крайнего значащего упорядоченного столбца. Количество элементов в последовательности является минимальным количеством упорядоченных групп, так что для каждой упорядоченной группы из более чем одной строки все значения этого упорядоченного столбца идентичны.

—    Если упорядоченный порядок основывается на дополнительных упорядоченных столбцах, то каждая упорядоченная группа из более чем одной строки является последовательностью упорядоченных групп. Количество элементов в каждой последовательности и положение по порядку каждой упорядоченной группы в каждой последовательности определяется значениями следующего наиболее значащего упорядоченного столбца. Количество элементов в каждой последовательности является минимальным количеством упорядоченных групп, так что для каждой упорядоченной группы с более чем одной строкой все значения этого упорядоченного столбца идентичны.

—    Предыдущий параграф касается по очереди каждого дополнительного упорядоченного столбца. Если упорядоченная группа состоит из множественных строк и не является последовательностью упорядоченных групп, то порядок строк в этой упорядоченной группе является неопределенным.

—    Пусть С будет упорядоченным столбцом и S обозначает последовательность, определяемую значениями С.

—    Упорядоченное направление связано с каждым упорядоченным столбцом. Если направление С восходящее, то первая упорядоченная группа S содержит наинизшее значение С, а каждая последующая упорядоченная группа содержит значение С, большее, чем значение С в предшествующей упорядоченной группе. Если направление нисходящее, то первая упорядоченная группа содержит наивысшее значение С, а каждая последующая упорядоченная группа содержит ‘значение С, меньшее, чем значение С в предшествующей упорядоченной группе.

67

Страница 73

ГОСТ Р ИСО/МЭК 9075—93

-Упорядочение определяется правилами сравнения, определенными в 5.11 «<предикат сравнения>». Порядок нулевого значения по отношению к ненулевым значениям определяется разработчиком, но он должен быть либо больше, либо меньше, чем все ненулевые значения.

• -*- < Спецификация упорядочения> задает упорядоченный столбец и направление. Упорядоченный столбец является столбцом, который опрашивается <целым без зна-ка> или <спецификацией столбца>. <Целое без знака > i опрашивает t-й столбец Т. <Спецификация столб-ца> опрашивает поименованный столбец.

—    Если DESC задано в Сспецификации упорядочения;^,, то направление упорядоченного столбца, заданного этой < спецификацией упорядочения^*, нисходящее. Если задано ASC, или не задано ни ASC, ни DESC, то направление упорядоченного столбца восходящее.

—    Последовательность < спецификация упорядочения> определяет относительную значимость упорядоченных столбцов. Упорядоченный столбец, заданный первой СспецификацИей упорядочения^ является наиболее значимым упорядоченным столбцом, и каждый последовательно задаваемый упорядоченный столбец является менее значимым, чем ранее заданный упорядоченный столбец.

8.4 <оператор удаления: по положению>

Функция

Удаление строки из таблицы.

Формат

• <оператор удаления: по положению> :: =

DELETE FROM <имя таблицы>

• WHERE CURRENT OF <имя курсора>

Правила синтаксиса

1)    Применимые <привилегии> для Симени таблицы> должны включать в себя DELETE.

\

Примечание — «Применимые <привилегии>» для <имени таблицы>-определены в 6.10, «< определение привилегнй>».    у

2)    Содержащий <модуль> должен содержать <объявление курсора> CR, чье <имя курсора> такое же,*как и <иМя курсо-ра> ,в <операторе удаления: по положению>.

3)    Таблица, обозначенная Ср, не должна быть только считы-■аемой таблицей.

68

Страница 74

ГОСТ Р ИСО/МЭК 9076^-9»

4) Пусть Т обозначает таблицу, идентифицированную <йме-нем таблицы>. Т должна быть таблицей, идентифицированной в первом <спецификаторе отображения> в <спецификации курсо- ■ ра> CR.

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

1)    Курсор CR должен располагаться на строке.

2)    Строка, из которой выводится текущая строка CR, удаляется.

8.5 <оператор удаления: поиск>

Функция

Удаление строки из таблицы.

Формат

<оператор удаления: поиск> :: =

DELETE FROM <имя таблицы>

WHERE <условие поиска>

Правила синтаксиса

1)    Применимые <привилегии> для Симени таблицы> долж-ны включать в себя DELETE.

Примечание — «Применимые < привилегии >» для <имени таблицы>-определены в 6.10 «< определение привилегий >».

2)    Пусть Т обозначает таблицу, идентифицированную <именем таблицы>. Т не должна быть только считываемой таблицей или таблицей, которая идентифицированна в <спецификаторе-отображения> любого <подзапроса>, содержащегося в <усло-вии поиска>.

3)    Контекстом < имени таблицы > является весь <оператор удаления: поиск>.

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

1) Возможны следующие варианты:

a)    Если <условие поиска> не задано, то удаляются все' строки таблицы Т.

b)    Если <условйе поиска> задано, то оно применяется к каждой строке Т с <именем таблицы>, связанным с этой строкой, и все строки, для которых результатом <условия поиска> является истина, удаляются. Каждый <подзапрос> в <условиях поиска>; эффективна-выполняется для каждой строки таблицы Г, а результаты используются в применении <условий. поиск^> н данной строке Т. Если любой выполняемый <подзапрос>* содержит внешнюю ссылку к столбцу таблицы Т, то* ссылка делается на значение этого столбца в данной строке Т.

69»

Страница 75

ГОСТ Р ИСО/МЭК 9076—93

Примечание — «Внешняя ссылка» определена в 6.7 «сспецифнкйод* •столбца >*.

8.6 <оператор выборки> *

Функция ^    .

Установка курсора на следующей строке таблицы и отыскание значений из этой строки.

Формат

<оператор выборки> :: =

FETCH <имя курсора> INTO <перечень цели выборки>

<перечень цели выборки> :: =

<спецификация цели> [{, Сспецификация цели>}...]

Правила синтаксиса

1)    Содержащий <модуль> должен содержать <объявление курсора> CR, чье <имя курсора> такое же, как и <имя курсо-ра> в <операторе выборки>. Пусть Т будет таблицей, определенной Сспецификацией курсора> CR.

2)    Число <спецификаций цели> в <перечне цели выборки> .должно быть таким же, как и порядок таблицы Т.

3)    Возможны следующие варианты:

a)    Если тип данных цели, заданной i-fi Спецификацией цели> в Сперечне цели выборки>, является строкой символов, то тип данных в t-м столбце таблицы Т должен быть строкой символов.

b)    Если тип данных цели, заданной i-й <спецификацией цели> в <перечне цели выборки>, является точным числом, то тип данных в *-м столбце таблицы Т должен быть точным числом.

c)    Если тип данных цели, заданной t-й Сспецификацией цели> в Сперечне цели выборки>, является приближенным числом, то тип данных в i-м столбце таблицы 7 должен быть приближенным или точным числом.

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

1)    Курсор CR должен быть в открытом состоянии.

2)    Если таблица, заданная курсором CR, пуста или если CR

•располагается на последней строке или после нее, то CR располагается после последней строки, значение 100 приписывается параметру SQLCODE, и значения не присваиваются целям; идентифицированным Сперечнем цели выборкн>. ,    .    '■    .

3)    Если CR располагается перед строкой, то GR располагается на этой строке, и значения присваиваются их соответствующим целям.

“70

Страница 76

ГОСТ Р ИСО/МЭК 9078—9*

4)    Если положение CR находится на г, где г — строка, отличающаяся от последней строки, то CR располагается на строке непосредственно после г, и значения в строке непосредственно после г присваиваются своим соответствующим целям.

5)    Присвоение значений целям в <перечне целей выборки>, отличающимся от параметра SQLCODE, определяется разработчиком. Параметр SQLCODE получает значение последним.

6)    Если происходит ошибка во время присвоения значения цели, то параметр SQLCODE получает установленное разработчиком отрицательное число, и значения целей, отличных от параметра SQLCODE, определяются разработчиком.

7)    Пусть V будет целью, и пусть v обозначает соответствующее значение в текущей строке CR.

8)    Если v — нулевое значение, то нужно задать признак для V, и этот признак устанавливается в —1. Если v — ненулевое значение, и V имеет признак, то возможны следующие варианты:

a)    Если тип данных V является строкой символов длиной L, а длина М для v больше, чем L, то признак устанавливается на М.

b)    В других случаях признак устанавливается равным 0.

c)    Цель, идентифицированная i-й Сспецификацией цели> Сперечня целей выборки>, соответствует t-му значению текущей строки CR.

10) Возможны следующие варианты:

a)    Если тип данных V является строкой символов, а длина v равна длине V, то значение V устанавливается для v.

b)    Если тип данных в V является строкой символов длиной L, а длина v больше, чем L, то значение V устанавливается на первые L символов в v.

c)    Если тип данных V является строкой символов длиной L, а длина М для v меньше, чем L, то первые М символов в V устанавливаются для и, а последние L—M символов V приобретают символ пробела.

d)    Если тип данных V является точным числом, то должно быть представление значения v в тип данных V, при котором не теряются никакие первые значащие разряды, и значение V устанавливается на это представление.

e)    Если тип данных в V является приближенным, числом,

то значение V устанавливается на приближенное значение V.    \

8.7 <оператор вставки>    \

Функция

Создание новых строк в таблице.

Страница 77

ГОСТ Р ИСО/МЭК 9075-93

Формат    ...

<оператор вставки> :: =

INSERT INTO <имя таблицы> [(Сперечень столбцов вставки>)]

{VALUES (<перечень'значений вставки>)

| <спецификация запроса>}

Сперечень столбцов вставки> =

Симя столбца> [{, Симя столбца>}...]

Сперечень значений вставки> :: =

<вставить значение> [{, Свставить значение>}...]

<вставить значение> :: =

<спецификация значения> | NULL Правила синтаксиса

1) Применимые <привилегии> для <имени таблицы> должны включать в себя INSERT. ‘

Примечание — «Применимые <прнвилегин>» для <имени таблицы> определены в 6.10 «<определение привилегий >*.

' 2) Пусть Т обозначает таблицу, идентифицированную <именем: таблицы>. Т не должна быть только считываемой таблицей или таблицей, которая идентифицируется в Сспецификаторе отобра-жения> Сспецификации запроса> или любом Сподзапросе>„ содержащемся в <спецификации запроса >.

3) Каждое <имя столбца> в Сперечне столбцов вставки> должно идентифицировать столбец Г, и этот же столбец не должен идентифицироваться более одного раза. Пропуск < перечня столбцов вставки> является неявной спецификацией Сперечня столбцов вставки>, которая идентифицирует все столбцы Т в восходящей последовательности их расположения по порядку в пределах Т.

4)    Столбец, идентифицированный <перечнем столбцов встав-ки>, является предметным столбцом.

б) Возможны следующие варианты:

a)    Если задан-<перечень значений вставки>, то количест

во Сзначений вставки> должно быть равным количеству <имен столбцов> в Сперечне столбцов вставки>. Пусть i-й пункт ^оператора вставки> относится к i-й <спецификации значения> в этом Сперечне значений вставки>. ,    i    .    j.    • -

b)    Если задана <спецификация запроса>, то порядок таблицы, заданный этой <спецификацией запроса>, дол* жен быть равен количеству Симен столбцов> в ^перечне столбцов вставки>. Пусть ^-й элемент Соперато-

Страница 78

ft    \ си, <    ГОСТ P ИСО/МЭК 9075—98

?.

ра вставки> относится к i-му столбцу таблицы, заданной <спецификацией запроса>.

6) Если i-й элемент <оператора вставки> не является <зна-^ением вставки>- NULL, то возможны следующие варианты:

a)    Если тип данных столбца таблицы Г, обозначенного i-м Сименем столбца>, является строкой символов длиной L, то тип данных i-ro элемента Соператора вставки> должен быть строкой символов длиной меньше или равной L.

b)    Если тип данных столбца таблицы Т, обозначенного i-м <именем столбца>, является точным числом, то тип данных i-ro элемента <оператора вставки> должен быть точным числом.

c)    Если тип данных столбца таблицы 7*, обозначенного i-м <именем столбца>, является приближенным числом, то тип данных i-ro элемента <оператора вставки> должен быть приближенным или точным числом.

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

1)    Строка вставляется по следующим этапам:

a) Строка-кандидат эффективно создается так, как это описано в Общих правилах в 6.4 «Сспецификатор умолчания^. Если Т является базовой таблицей В, то строка-кандидат включает в себя каждый столбец из В. Если Т является представляемой таблицей, то строка-кандидат включает в себя каждый столбец базовой таблицы В, из которой выведена таблица Т.

b)    Для каждого предметного столбца в строке-кандидате значение заменяется на вставляемое значение.

c)    Строка-кандидат вставляется в В.

2)    Если Т является представляемой таблицей, определенной Сопределением представлениям которое задает WITH CHECK OPTION, то если Сспецификац’ия запроса>, содержащаяся в Сопределении представлениям задает Сспецификатор выбор-ки>, не содержащийся в <подзапросе>, то <условие поиска> этого Сспецификатора выборкй> должно быть истинным для строки-кандидата.

3)    Если задан Сперечень значений вставки>, то возможны «следующие варианты:

а) Если i-e <значение вставки> из <перечня\ значений вставки> является <спецификацией значения^, то значение столбца в строке-кандидате, соответствующее i-му предметному столбцу, является значением этой <спецификации значениям    ....

73

Страница 79

TOCf P И CO/M Э К 9076—93

b)    Если i-e <значенйе вставки> <перечня значений встав-ки> является NULL, то значение столбца строки-кандидата, соответствующего i-му. предметному столбцу, является нулевым значением.

4)    Если <спецификация запроса> задана, то пусть R будет результатом <спецификации запроса>. Если R пустой, то параметру SQLCODE приписывается значение 100, и никакая строка не вставляется. Число созданных сТрок-кандидатов равно мощно-

ч сти R. Вставляемые значения строки-кандидата являются значениями в одной строке R, а значения в одной строке R являются вставляемыми значениями одной строки-кандидата.

5)    Пусть V обозначает строку из R или последовательность значений, заданных <перечнем значений вставки>. i-e значение V является вставляемым значением предметного столбца, идентифицированного i-м < именем столбца > в <перечне значений вставки>.

6)    Пусть С обозначает предметный столбец, а и — ненулевое вставляемое значение в С.

7)    Возможны следующие варианты:

а) Если тип данных С — это строка символов, а длина v-равная длине С, то значение С устанавливается в v.

Б) Если тип данных С — строка символов длиной L, а длина М для v меньшая, чем L, то первые М символов в С устанавливаются в и, а последние М- символов в С приобретают вид пробелов.

c);    Если типом данных С является точное число, то должно быть представление значения v в типе данных в С, которое не теряет никаких первых значащих разрядов, и значение С устанавливается по этому представлению.

d)    Если тип данных С является приближенным числом», то значение С устанавливается в приближенное значение v..

8.8 < оператор открытия >

Функция

Открытие курсора:

Формат

<оператор открытия> :: =

OPEN <имя курсора>    \

Правила синтаксиса

1) Содержащий <модуль> должен содержать Собъявленне курсора> CR, чье <имя курсора> является таким же, как и

74

Страница 80

I

ГОСТ P И CO/M ЭК 9075—85-

<имя курсора> в Соператоре открытия>.

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

1)    Курсор CR должен быть в закрытом состоянии.

2)    Пусть 5 обозначает <спецификацию курсора> для курсора CR.

3)    Курсор CR открывается следующими операциями:

a)    Эффективно проводится копирование 5, в котором каждая Сспецификация • цели> заменяется значением цели, которое его идентифицирует.

b)    Если 5 задает только считываемую таблицу, то эта таблица эффективно создается, как задано копированием S.

c)    Курсор CR помещается в открытое состояние, и его положение находится перед первой строкой таблицы.

8.9    Соператор отката>

Функция

Окончание текущей транзакции аннулированием изменений. Формат

Соператор возврата> :: =

ROLLBACK WORK Правила синтаксиса Нет.

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

I) Любые изменения базы данных, сделанные текущей транзакцией, аннулируются.

2\ Любые курсоры, которые были открыты текущей транзакцией, закрываются.

3) Текущая транзакция заканчивается.

8.10    Соператор выбора>

Функция

Отыскание значений из заданной строки таблицы.

Формат

<    оператор bw<W21> : ; *

SELECT [ALL I1 DISTINCT] Сперечень выбора>

INTO <перечень цели выбора>    \

Свыражение таблицы>    \

<    перечень, цели выбора> ::

<спецификация цели> [{, Сспецификация цели>}...]

75

Страница 81

СГОСТ Р ИСО/МЭК 9075-93

Правила синтаксиса

1) Применимые <привилегии> для каждого <имени табли-цы>, содержащегося в <выражении таблицы>, должны включать в себя SELECT.

Примечание — «Применимые <привилегии>» для Сименн таблицы> определены в 6.10 «<определение привилегий>».

• • 2) Выражение таблицы не должно включать Сспецификатор труппировки> или <спецификатор выборки групп> и не должно идентифицировать групповое представление.

, 3) Количество элементов в <перечне выборки> должно быть таким же, как и число элементов в Сперечне целей выбора>.

4)    Возможны следующие варианты:

a)    Если тип данных цели, обозначенной t-й Сспецифика-цией цели> в <перечне целей выбора>, является строкой символов, то тип данных i-ro <выражения значе-ния> в <перечне выборки> должен принадлежать к строке символов.

b)    Если тип данных цели, заданной t-й <спецкфикацией

цели> в •<перечне целей выборки >, относится к точным числам, то типом данных для i-ro <выражения зна-чения> в <перечне выборки> должно быть точное число.    :    *.    ’    "    Ч    >!

c)    Если типом данных цели, заданной t-й <спецификацией цеЛи> в Сперечне целей выборки>, является прибли- j женное число, то типом данных t-ro <выражения значе- ! нйя> в <перечне выборки> должно быть приближенное число или точное число.

5)    Пусть 5 будет <спёцификацией запроса>, чьи <перечень 'выборки> и <выражение таблицы> заданы в Соператоре вы-<5ора>, и он задает ALL или DISTINCT, если это задано в <опе-раторе выбора>. 5 должно быть справедливой <спецификацией дапроса>.

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

1)    Пусть R обозначает результат <спецификации запроса^ S.

2)    Мощность R не должна быть больше единицы. Если R пус

тая; то параметр SQLCODE приобретает значение 100, и значения не присваиваются целям, идентифицированным сперечнем целей •выборки>.    \

3)    Если R не пустая, то значения в строке R присваиваются их : соответствующим целям.

4)    Присвоение значений целям в <перечне целей выборки>, i. отличных от параметра SQLCODE, определяется разработчиком.

76

Страница 82

ГОСТ Р ИСО/МЭК 9075-93

Параметр SQLCODE приобретает последнее значение.

5)    Если во время присвоения значений целям происходит ошибка, то параметр SQLCODE приобретает отрицательное число, величина которого определяется разработчиком, и значения целей, отличных от параметра SQLCODE, задаются разработчиком.

6)    Цель, идентифицированная i-й Сспецификацией цели> в <перечне целей спецификации>, соответствует i-му значению в строке R.

7)    Пусть V будет идентифицированной целью, a v обозначает ее соответствующее значение в строке R.

8)    Если v — нулевое значение, то для V следует задать признак, и установить этот признак в —1. Если v является ненулевым значением, а V имеет признак, то возможны следующие варианты:

a)    Если типом данных V является строка символов длиной L, и длина М больше, чем L, то признак устанавливается в М.

b)    В других случаях признак устанавливается на 0.

9)    Возможны также следующие варианты:

a)    Если типом данных V является строка символов, а длина v эквивалентна длине V, то значение V устанавливается в V.

b)    Если типом данных V является строка символов длиной L, а длина v больше, чем L, то значение V устанавливается на первые L символов в v.

c)    Если типом данных V является строка символов длиной L, и. длина М в v меньшая, чем L, то первые М символов в V устанавливаются для и, а последние L—M символов в V приобретают характер пробелов.

d)    Если типом данных V является точное число, то должно быть представление значения v в типе данных V, при котором не теряется ни один первый значащий разряд, и значение V устанавливается по этому представлению.

e)    Если типом данных в V является приближенное число, то значение V устанавливается в приближенное значение V.

8.11 Соператор корректировки: по положению>

Функция

Корректировка строки таблицы.

Формат

Соператор корректировки: по положению> :: =

UPDATE <имя таблицы>

4 Зак. 1649

77

Страница 83

ГОСТ Р ИСО/МЭК 9075—93

SBT <спецификатор набора: по положению> •

[{, <спецификатор набора: по положении»}...] WHERE CURRENT OF <имя курсора>

<спецификатор набора: по положейию> :: =

< предметный столбец: по положению> =

{<выражение значения> | NTJLL}

<предметный столбец: по положенню> :: = <имя столбца>

Правила синтаксиса

1)    Применимые <привилегии> для <имени таблицы> должны включать в себя UPDATE для каждого <предметного столбца: по положению>.

Примечание — «Применимые < привилегии >> для Симени таблицы>■ определены в 6.10 «<определение привилегий >».

2)    Содержащий <модуль> должен содержать <объявление курсора> CR, чье <имя курсора> такое же, как и <имя курсо-ра> в Соператоре корректировки: по положению>.

3)    Таблица, обозначенная CR, не должна быть только считываемой таблицей.

4)    Пусть Т обозначает таблицу, идентифицированную Симе-ием таблицы>. Т должна быть таблицей, идентифицированной в первом Спецификаторе отображения> в <спецификации курсора > CR.

5)    <Выражение значения> в Спецификаторе набора: по положении^ не должно включать в себя Спецификацию функций набора>.

6)    Каждое <имя столбца>, заданное как <предметный столбец: по положению>, должно идентифицировать столбец в Т. Тоже < предметный столбец: по положению> не должно появляться более чем один раз в Соператоре корректировки: по положе-нию>.

7)    Контекстом <имени таблицы> является весь Соператор коррекции: по положению>.

8)    Для каждого < спецификатор а набора:, по положению> возможны следующие варианты:

a)    Если задано NULL, то .столбец, обозначенный как <предметный столбец: по положению>, должен допускать нули.

b)    Если типом данных в столбце, обозначенном ^сак <предметный столбец: по положению>, является сорока символов длиной L, то типом данных Свыражения значе-ния> должна быть строка символов длиной менее или равной длине

78

Страница 84

1    ГОСТ Р ИСО/МЭК 9075—93

c)    Если типом данных столбца, обозначенного как <пред-

*    метный столбец: по положению>, является точное чис

ло, то типом данных <выражения значения> должно быть точное число.

d)    Если типом данных столбца, обозначенного как <предметный столбец: по положению>, является приближенное число, то типом данных в <выражении значения> должно быть приближенное или точное число.

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

1)    Курсор CR должен быть установлен на строку.

2)    Предметная строка — это та строка, из которой выводится текущая строка CR.

3)    Предметная строка корректируется так, как это задается каждым ■< спецификатором набора: по положению>. <Спецификатор набора: по положению> задает предметный столбец и значение корректировки в этом столбце. Предметный столбец — это столбец, идентифицированный как <предметный столбец: по положении^ в <спецификаторе набора: по положению>. Значение для корректировки — это нулевое значение или значение, заданное <выражением значения>. Если <выражение значения> содержит ссылку на столбец таблицы Т, то ссылка эта делается на значение этого столбца в предметной строке перед тем, как корректируется любое значение предметной строки.

4)    Предметная строка корректируется следующим образом:

a)    Создается строка-кандидат, которая является копией предметной строки.

b)    Для каждого <спецификатора набора: по положению>-значение заданного предметного столбца в строке-канди-дате заменяется заданным скорректированным значением.

c)    Предметная строка заменяется строкой-кандидатом.

5)    Если Т — представляемая таблица, определяемая <опре

делением представления^ которое задает «WITH CHECK OPTION», то если Сспецификация запроса>, содержащаяся в <опре-делении представления>, задает <спецификатор выборки>, не содержащийся в < подзапросе >, то <условие поиска> этого Сспецификатора выборки> должно быть истинным'для строки-кандидата.    v

6)    Пусть С обозначает предметный столбец, at/—, ненулевое

.корректируемое значение в С.    \

7)    Возможны следующие варианты:

а) Если типом данных С является строка символов, а длина равна длине С, то значение С устанавливается в и.

4•

79

Страница 85

ГОСТ Р И СО/М ЭК 9075—93

b)    Если типом данных С является строка символов длиной L, и длина М в v меньше, чем длина L, то первые Mi символов в С устанавливаются в v, а последние символы L—М в С приобретают смысл пробелов..

c)    Если типом данных в С является точное число, то должно быть представление значения у в типе данных С, которое не теряет ни одного первого значащего разряда,, а значение С устанавливается в это представление.

d)    Если типом данных в С является приближенное число» то значение С устанавливается в приближенное значение и.

8.12 <оператор корректировки: поиск>

Функция

Корректировка строк в таблице.

Формат

<оператор корректировки: поиск> :: =

UPDATE <имя таблицы>

SET <спецификатор набора: поиск>

[{, Сспецификатор набора: поиск>}...]

{WHERE <условие поиска>]

Сспецификатор набора: гюиск> :: =

<предметный столбец: поиск> =

{<выражение значения> | NULL}

<предметный столбец: поиск> : : = <имя столбца>>

Правила синтаксиса

1)    Применимые <привилегии> для Симени таблицы> должны включать в себя UPDATE для каждого <предметного столбца: поиск>.

Примечание — «Применимые <привилегии>» для < имени таблицы :> определены в 6.10 «< определение привилегий >».

2)    Пусть Т обозначает таблицу, идентифицированную <име

нем таблицы>. Т не должна быть только считываемой таблицей или таблицей, которая идентифицируется в спецификаторе отображения люоого <подзапроса>, который содержится в <условии поиска >.    ,

3)    <Выражение значения> в <спецификаторе набора: по

иск^ не должно включать в себя <спецификацию ^абора функ-ций>.    '    .    :

4) Каждое <имя столбца>, заданное как <предметный столбец: поиск>, должно идентифицировать столбец таблицы Т. Тот же <предметный столбец: поиск> не должен появиться более чем один раз в Соператоре корректировки: поиск>.

80

Страница 86

ГОСТ Р ИСО/МЭК 9075-9»

5)    Контекстом <Симени таблицы> является весь <оператор> корректировки: поиск>.

6)    Для каждого Сспецификатора набора: поиск> возможны следующие варианты:

a)    Если задан NULL, то столбец, обозначенный как <пред-метный столбец: поиск>, должен разрешать нулевые, значения.

b)    Если типом данных в столбце, обозначенном как <предметный столбец: поиск>, является строка символов длиной L, то типом данных <выражения. значения> должна быть строка символов длиной меньше или равной L.

c)    Если типом данных в столбце, обозначенным как <пред~ метный столбец: поиск>, является приближенное число, то типом данных в <выражении значения> должно> быть приближенное или точное число.

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

1)    Возможны следующие варианты:

a)    Если <условие поиска> не задано, то все строки таблицы Т являются предметными строками.

b)    Если <условие поиска> задано, то оно применяется для каждой строки в таблице Т с Сименем таблицы>». связанным с этой строкой, и предметными строками являются те строки, для которых результат <условия по-иска> — истина. Каждый <подзапрос> в <условии поиска> эффективно выполняется для каждой строки в таблице Т, а результаты используются применительно к <условию поиска> к данной строке таблицы Т. Еслк какой-либо <подзапрос> содержит внешнюю ссылку на столбец таблицы Т, то ссылка делается на значение этого столбца в данной строке таблицы Т.

Примечание — «Внешняя ссылка» определена в 6.7 «< спецификация столбца >».

2)    Каждая предметная строка корректируется в соответствии: с каждым Сспецификатором набора: поиск>. <Спецификатор набора: поиск> задает предметный столбец и корректируемое значение этого столбца.. Предметным столбцом является\столбец, определяемый <предметным столбцом: поиск>. Корректируемое-значение является нулевым значением или значением, задаваемым <выражением значения>. Если < выражение значения> содержит ссылку на столбец таблицы 7\. то ссылка делается на значение этого столбца в предметной строке перед тем, как корректировать любое значение предметной строки.

81

Страница 87

ТОСТ Р ИСО/МЭК 9076—93

*    3)    Предметная строка корректируется следующим образом:

а) Создается строка-кандидат, которая является копией предметной строки.

1Ь) Для каждого <спецификатора набора: поиск> значение заданного предметного столбца в строке-кандидате заменяется заданным корректируемым значением.

с) Предметная строка заменяется строкой-кандидатом.

4)    Если Т является представляемой таблицей, определяемой -Сопределением представления>. которое задает WITH CHECK OPTION, то если Сспецификация запроса>, содержащаяся в <определении представления^ задает <спецификатор выбор-ки>, не содержащийся в <подзапросе>, то <условие поиска> этого <спецификатора выборки> будет истиной для строки-кан-лидата.

5)    Пусть С обозначает предметный столбец, a v — ненулевое корректируемое значение в С.

6)    Возможны следующие варианты:

a)    Если типом данных С является строка символов, а длина v равна длине С, то значение С устанавливается в v.

b)    Если типом данных С является строка символов длиной L, а длина М в v меньше, чем L, то первые М символов в С устанавливаются в и, а последние L—M символов С приобретают вид пробелов.

c)    Если типом данных С является точное целое, то должно быть представление значения вив типе данных С, которое не упускает никаких первых значащих разрядов, и значение С устанавливается в это представление.

d)    Если типом данных является приближенное число, то значение С устанавливается в приближенное значение v.

9 УРОВНИ

Настоящий стандарт задает два уровня и отдельное средство ^расширения целостности.

Средство расширения целостности предоставляет следующие 'синтаксические конструкции наряду с их соответствующими Правилами синтаксиса и Общими правилами:    ч

51) Сспецификатор умолчания>; #

2)    все варианты <ограничения столбца>, отличные от NOT

.'NULL и NOT NULL UNIQUE;    \

3)    все варианты <определения ограничения таблицы>, за ис-:ключением UNIQUE (<перечень уникальности столбцов>);

4)    операция REFERENCES (<перечень столбцов предоставления привилегий^).

Страница 88

ГОСТ Р ИСО/МЭК 9075—93

Уровень 2 — это полный SQL язык баз данных, за исключением средства расширения целостности. Уровень 1 является подуровнем для Уровня 2, который удовлетворяет следующим дополнительным правилам.

1)    4.16 «Транзакции»:

a)    Первое предложение в параграфе 1 заменяется на:

— Транзакция является последовательностью операций',, включая операции над базами данных, и рассматривается как целое в отношении восстановления.

b)    Параграф 2 удаляется.

c)    Второе предложение в параграфе 3 удаляется.

2)    5.3 «<лексема >»:

Идентификатор должен состоять из не более чем 12 символов.

3)    5.4 «Симена>»:

С Имя таблицы > не должно содержать С идентификатор полномочий :>.

4)    5.6 «Сспецификация значения> и Сспецификация цели>»:‘

a)    Сспецификация значения> не должна содержать USER.

b)    <спецификация параметра> не должна задавать Спа-раметр-признак>.

c)    Сспецификация переменной> не должна задавать С переменную-признак^

5)    5.7 «Сспецификация столбца>»:

К правилу синтаксиса 4 добавляется следующее:

<Спецификация столбца > не должна быть внешней ссылкой.

6)    5.8 «Сспецификация функции набора>», 5.24 «Сподзап-рос>», и 5.25 «Сспецификация запроса>»:

С Функция мультинабора >, Сподзапрос> и Сспецификация запроса> не должны содержать ALL.

Примечание — В Уровне 1 сохранение дубликатов задается опусканием. DISTINCT.

7)    5.8 «Сспецификация функции набора>»:

С Функция набора различимых объектов> не должна содержать AVG, MAX, MIN или SUM.

8)    5.11 «Спредикат сравнения>»:

СОперация сравнения> не должна содержать «С >».

Примечание — В Уровне 1 сравнение в форме «А< >В» выражается с помощью эквивалентного «NOT А = В>.

9)    5.14 «Спредикат подобия>»:

a)    сПредикат подобия> не должен задавать ESCAPE Сспецсимвол>.

b)    СПредикат подобия> не должен задавать NOT.

Страница 89

ТОСТ Р ИСО/МЭК 907Б-93

Примечание — В Уровне 1 Спредикаг подобия >, содержащий NOT, будет выражаться с помощью эквивалентного <условия поиска > для cNOT ;-< предикат подобия >».

10)    5.17 «<предикат существования>»:

<Предикат> не должен задавать <предикат существования^

11)    5.22 «<спецификатор группировки>»:

К Общему правилу 2 добавляется следующее предложение: «Группирование строк, в которых значение одного или более труппирующих столбцов является нулем, задается разработчиком».

12)    5.25 «Сспецификация запроса>»:

Правило синтаксиса И заменяется следующим:

«Разработчик определяет, является ли <спецификатор запро-

•са> корректируемым или только считываемым».

13)    6.1 «<схема>»:

<Схема> не должна задаваться. Реализация уровня 1 должна предоставлять некоторый механизм для связывания С идентификатора полномочий> и Сопределения таблицы>, <определения представления> или <определения привилегий>.

14)    6.2 «<определение таблиц>»:

СОпределение таблиц> не должно содержать <определение ограничения уникальности>. Реализация уровня 1 должна предоставлять некоторый механизм для задания ограничения уникаль-лости для таблицы.

15)’    6.3 «Сопределение столбца>»:

a)    <Тип данных> в <определении столбца> не должен содержать REAL, DOUBLE PRECISION или NUMERIC.

b)    <Определение столбца > должно задавать NOT NULL.

c)    СОпределение столбца> не должно задавать UNIQUE.

16)    6.9 «Сопределение представления^:

■СОпределение представления> не должно содержать WITH

CHECK OPTION.

17)    6.10 «Сопределение привилегий>»:

СОпределение привилегий> не должно содержать WITH 'GRANT OPTION.

18)    7.3 «Спроцедура>»:

a)    Правило синтаксиса 8, вариант (а) заменяется следующим:

Лрбой Стип данных> в Собъявлении параметра> должен задавать CHARACTER.

b)    В Общих правилах 3, вариант (а) каждое появление числа «100» заменяется выражением «положительное число, величина которого задается разработчиком».

c)    В Общих правилах 3, вариант (б) (1) заменяется следующим:

*4

Страница 90

ГОСТ Р ИСО/МЭК 9075-9»

Разработчик определяет, уничтожаются ли изменения* внесенные в базу данных при выполнении 5.

19)    8.3 «-Объявление курсора>»:

a)    <Спецификатор упорядочения> не должен содержать - <беззнаковое целое>.

b)    <Спецификатор упорядочения> не должен содержать ASC.

Примечание — В Уровне 1 восходящий порядок задается опусканием DESC*.

c)    <Выражение запроса> не должно содержать UNION..

Примечание — В Уровне 1 функция объединения не присутствует.

20)    8.7 .«<оператор вставки>»:

<Оператор вставки> не должен содержать <спецификацию» запроса>.

21)    8.11 «Соператор коррекции: по положению>» и 8.4 «<опе-ратор удаления: по положению>»: .

<Оператор SQL> не должен задавать «Оператор корректировки: по положению> или <оператор удаления:    по    положе

нию^

85

Страница 91

ГОСТ Р ИСО/МЭК 9076-93

ПРИЛОЖЕНИЕ А. < ВСТРОЕННАЯ ОБЩАЯ ПРОГРАММА SQL>

(Это приложение не является составной частью всего стандарта) ( Функция

Задает встроенную прикладную программу SQL.

■Формат

<встроенная общая программа SQL> :: =

<встроенная программа SQL К.ОБОЛ> <встроенная программа SQL ФОРТРАН>

< встроенная программа SQL ПАСКАЛЬ> <встроенная программа SQL ПЛ/1 > <встроенный оператор SQL> :: =    ■    —

< префикс SQL>

{Собъявление курсора>

| < встроенное объявление исключений> | <оператор SQL>

<терминатор SQL>

Спрефикс SQL> :: =

EXEC SQL Стерминатор SQL> :: =

END — EXEC|;

<секция объявления встроенного SQL> :: =

<объявление начала встроенного SQL> [Сопределение главной переменной>...] <объявление окончания встроенного SQL> <объявление начала встроенного SQL> :: =

<префикс SQL> BEGIN DECLARE SECTION [<терминатор SQL>]

<объявление окончания встроенного SQL> :: =

<префикс SQL> END DECLARE SECTION _ Стерминатор SQL>

Сопределение главной переменной> : : =

<определенне переменной КОБОЛ>

| <определение переменной ФОРТРАН>

| Сопределение переменной ПАСКАЛЬ>

| Сопределение переменной ПЛ/1>    \    •

<имя встроенной переменной> :: =

| <главный идентификатор>    \

<главный идентификатор> :: =    \

<главный идентификатор КОБОЛ>

|<главный идентификатор ФОРТРАН>

| Сглавный идентификатор ПАСКАЛЬ> |<главный идентификатор ПЛ/1 >

86

Страница 92

ГОСТ Р ИСО/МЭК 9075-9»

Правила синтаксиса

1)    <Главная программа встроенного SQL> — это прикладная: Программа, которая состоит из текста языка программирования и; текста SQL. Текст языка программирования должен соответствовать требованиям специфичного стандартного языка программирования. Текст SQL должен состоять из одного или более Сопе-раторов встроенного SQL> и, произвольно, одной или боле©; Ссекций объявления встроенного SQL>.

2)    <Оператор встроенного SQL>, <объявление начала встро

енного SQL> или собъявление окончания встроенного; SQL>K содержащиеся во <встроенной программе SQL КОБОЛ>, должны содержать <признак конца SQL>, т. е. END—EXEC. СОпе-ратор встроенного SQL>; <объявление начала встроенного SQL> или <объявление окончания встроенного SQL>, содержащиеся во <встроенной программе SQL ФОРТРАН>, не должны: содержать Стерминатор SQL>. <Онератор встроенного SQL>„ <оОъявление начала встроенного SQL> или Собъявление окончания встроенного SQL>, содержащиеся во <встроенной программе SQL ПЛ/1>, должны содержать Стерминатор SQL>, т. е. полудвоеточие. Во С встроенной программе SQL ПАСКАЛЬ;> <объявление начала встроенного SQL> должно содержать Стерминатор SQL>, т. е. полудвоеточие; Собъявление окончания1 встроенного SQL> или Соператор встроенного SQL>, за которым непосредственно следует Собъявление начала встроенного SQL> или Соператор встроенного SQL>, должно содержать Стерминатор SQL>, т. е. точка с запятой; в других случаях Собъявление окончания встроенного SQL> или Соператор встроенного SQL> не должны содержать Стерминатор SQL>, а должны заканчиваться в соответствии с правилами для операторов Пае-каля.    "

3)    сПрефикс SQL>, Собъявление начала встроенного* SQL> или собъявление окончания встроенного SQL>, должны задаваться в пределах одной строки без комментариев. В остальных* случаях правила продолжения строк и лексем от одной строки к

— другой и"Для помещения комментариев те же,'что и для языка •программирования содержащей его Сглавной программы встроенного SQL>.

4)    СОбъявление курсора>, содержащееся в Сглавной про

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

5)    Любой Сглавный идентификатор>, присутствующий в Солераторе встроенного SQL> в Сглавной программе встроен*

87

Страница 93

ЯРСТ. р ИСО/МЭК 9075-93

ного SQL>, должен определяться в точно одном <определении главной переменной>, содержащейся в этой <главной программе встроенного SQL>. Это Сопределенйе главной переменной> должно появляться в тексте < глав ной программы встроенного SQL> перед любым Соператором встроенного SQL>, который ■ссылается на Сглавный идентификатор >. <Определение главной переменной> должно быть таким, чтобы ссылка главного .языка на Сглавный идентификатор> была справедливой при .каждом Соператоре встроенного SQL>, который содержит Сглавный идентификатор>.

6)    СОпределение главной переменной> определяет тип данных главного языка для Сглавного идентификаторах Для каждого такого типа данных главного языка эквивалентный тип данных SQL задан в Приложении С, «Спрограмма встроенного SQL КОБОЛ>», Приложении D «Спрограмма встроенного SQL ФОРТРАН>», Приложении Е «Спрограмма встроенного SQL Паскаль>» и Приложении F «Спрограмма встроенного SQL ПЛ/1>».

7)    Что касается Сглавной программы встроенного SQL>H, то существует заключенный в SQL Смодуль>М, выводимый из //.следующим образом:

a)    М содержит •< спецификатор имени модуля >, чье <имя модуля> либо задается разработчиком, либо опускается.

b)    М содержит <спецификатор языка>, который задает либо КОБОЛ, ФОРТРАН, Паскаль, либо ПЛ/1, где Н соответственно Спрограмма встроенного SQL КОБОЛ>, Спрограмма встроенного SQL ФОРТРАН>, Спрограмма встроенного SQL Паскаль> или Спрограмма встроенного SQL ПЛ/1 >.

c)    М содержит Сспецификатор полномочий модуля>, для которого С идентификатор полномочий модуля> определяется разработчиком.

- d) Для каждого С объявления курсора> -ЕС, содержаще-vгося в Ht М содержит оАно Собъявление курсора> PC и одну Спроцедуру> PS, которая содержит Соператор

,.г открытия>, ссылающийся к PC. СИмя процедуры> PS . определяется разработчиком. PC является копией ЕС, в котором каждое отдельное С имя встроенной перемен-1ной> заменено на отдельное определенное\разработчи-ком Симя параметра>. PS содержит Собъявление па-раметра> для каждого Симени параметра>, содержащегося в PC, и Собъявление параметра>, которое за-

Страница 94

ГОСТ Р И СО/М ЭК 9076—93

дает SQLCODE. Порядок Собъявлений параметра> в PS определяется разработчиком. <Объявление парамет-ра>, которое соответствует данному отдельному < имени встроенной переменной> V, которое появляется в ЕС, задает отдельное <имя параметра>, с которым была произведена замена V, и <тип данных> SQL, который эквивалентен типу данных главного языка в V.

-е) М содержит <процедуру>, соответствующую каждому <оператору SQL>, содержащемуся в Я. <Процедура> PS из М, соответствующая <оператору SQL> ES из Я, определяется следующим образом:

Возможны такие варианты:

—    ES не является Соператором открытия>:

1    <Имя процедуры> PS определяется разработчиком.

2    < Оператор SQL> PS является копией ES, в котором каждое отдельное <имя встроенной перемен-ной> согласованно заменено на отдельное <имя па-раметра>, определенное разработчиком.

3    PS содержит Собъявление параметра> для каждого отдельного <имени параметра>, определенного разработчиком, которое содержится в <операто-ре SQL> PS, и Собъявление параметра>, которое задает SQLCODE. Порядок <объявлений парамет-ра> задается разработчиком. СОбъявление пара-метра>, соответствующее данному отдельному <име-ни встроенной переменной> V, существующему в ES, задает отдельное <имя параметра>, с которым был произведен обмен с V, и <тип данных> SQL, эквивалентный типу данных главного языка в V.

4. Разработчик определяет и то, что одна <процедура > М может соответствовать более чем одному Соператору SQL> в Я.

—    ЕЪ является-<операторбм'*откр.ыгия>т""

1    Пусть ЕС будет <объявлением курсора > в Я, к которому ссылается ES.

2    PS является <процедурой> в М, которая содержит Соператор открытня>, который • ссылается к <открытию курсора> в М согласно ЕС.

8) Что касается Сглавной программы встроенного SQL>, И то существует применяемый стандарт, согласующий главную программу Р, выведенную из Я, следующим образом:

89

Страница 95

ГОСТ Р ИСО/МЭК 9076—93

a)    Каждое Собъявление начала встроенного SQL> и каж

дое <объявленне окончания встроенного SQL> удале-ны. /    ,

b)    Каждый <оператор встроенного SQL>, содержащий <объявление курсора> или Собъявление встроенного исключения>, удален.

c)    Каждый <оператор встроенного SQL>, содержащий; <оператор SQL>, заменен на оператор главного языка,, который осуществляет следующие операции:

—    Процедура главного языка или подпрограмма CALL <процедуры> заключенного <модуля> М в Я, который соответствует Соператору SQL>. Если Сопе-ратор SQL> не является <оператором открытия>, то> аргументы CALL включают в себя каждый отдельный Сглавный идентификатор>, содержащийся в <опе~ раторе SQL>, наряду с переменной SQL. Если Сопе-ратор SQL> является <оператором открытия>, то* аргументы CALL включают в себя каждый отдельный <главный идентификатор>, содержащийся в соответствующем Собъявлении курсора> в Я наряду с переменной SQL. Порядок аргументов в CALL соответст-

>    вует    порядку соответствующего Собъявления пара

метра > в соответствующей <процедуре>.

Примечание — «Переменная SQLCODE» сокращается как «SQLCOD> в <программе встроенного SQL ФОРТРАН>. См. Правило синтаксиса 6 в Приложении D, «Спрограмма встроенного SQL ФОРТРАН >*.

—    Операция исключения, как задано в Приложении В, «Собъявление исключений>».

9)    Выведение содержащейся программы Р и содержащегося Смодуля> М в Сглавной программе встроенного SQL> Я эффективно осуществляет обработку команд манипулирования текстом программы главного языка, таких как включение или копи-

- -рование тексте^-------------• —---------------------

10)    При Сглавной программе встроенного SQL> Я с содержащимся С модулем > М и содержащейся программой Р, определенной выше:

a)    Содержащийся в Я Смодуль> М должен быть стандартным Смодулем.> SQL, как задано формата'ми и Правилами синтаксиса данного стандарта. \

b)    Если Я является Спрограммой встроенного \SQL КОБОЛ >, то содержащаяся программа Р должна быть-

90

Страница 96

ГОСТ Р ИСО/МЭК 9075-93

стандартной соответствующей программой КОБОЛ. Если Я — Спрограмма встроенного SQL ФОРТРАН>, то содержащаяся программа Р должна быть стандартной соответствующей программой ФОРТРАН. Если Я является <программой встроенного SQL Паскаль>, то содержащаяся в ней программа Р должна быть стандартной соответствующей программой Паскаль. Если Я является <программой встроенного SQL ПЛ/1>, то содержащаяся в ней программа Р должна быть стандартной соответствующей программой ПЛ/1.

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

1) Интерпретация <главной программы встроенного SQL> Я по определению эквивалентна интерпретации содержащейся в Я программы Р и содержащегося в Я < модул я > М.

Страница 97

ГОСТ Р ИСО/МЭК 9075—93

ПРИЛОЖЕНИЕ В СОБЪЯВЛЕНИЕ ВСТРОЕННОЙ ОСОБОЙ СИТУАЦИИ>

(Это приложение не является составноА частью всего стандарта) Функция

Задает действие, которое следует предпринять, когда Сопера-тор SQL> приводит к особой ситуации.

Формат

. Собъявление встроенной особой ситуации> :: =

WHENEVER <условие> <реакция на особую ситуацию>

<условие > :: =

SQLERROR | NOT FOUND <реакция на особую ситуацию> :: =

CONTINUE | <переход>

< переход > :: =

{GOTO| GO ТО} <цель>

<цель> :: = :<главный идентификатор>| <целое без знака> Правила синтаксиса

1)    Возможны следующие варианты:

a)    Если Собъявление встроенной особой ситуации> содержится в С программе встроенного SQL КОБОЛ >, то Сцель> Сперехода> должна задавать Сглавный: идентификатор>, т. е. имя раздела или неуточненное имя параграфа.

b)    Если Собъявление встроенной особой ситуации> содержится в- С программе встроенного SQL ФОРТРАН>, то Сцель> Сперехода> должна быть Сцелым без зна-ка>, т. е. меткой оператора, которая появляется в том же блоке программы, что и С переход >.

c)    Если Собъявление встроенной особой ситуации> содержится в Спрограмме встроенного SQL Паскаль>,

_ю Сцель>_ С перехода > должна быть Сцелым без

знака>, т. е. меткой.

d)    Если Собъявление встроенной особой ситуации> содержится в Спрограмме встроенного SQL ПЛ/1>, то

' Сцель> С перехода > должна задавать Сглавный идентификатора т. е'. постоянную метку или переменную метку.    \

2)    СОбъявление встроенной особой ситуации>, содержащееся в Сглавной программе встроенного SQL>, применяется к Соператору SQL>, содержащемуся в Зтой Сглавной программе встроенного SQL>, тогда и только тогда, когда Соператор SQL>

92

Страница 98

ГОСТ Р ИСО/МЭК 9075-9*

появляется после <объявления встроенной особой ситуации> я последовательности текста Сглавной программы встроенного-SQL>, и не существует других <объявлений встроенной особой ситуации>, которые задают это же <условие>, между собъяв-лением встроенной особой ситуации> и <оператором SQL> в-текстовой последовательности Сглавной программы встроенного SQL>.'

3) Если <объявление встроенной особой ситуации> задает <переход>, то <главный идентификатор> или Сцелое без зна-ка> в <переходе> должны быть такими, чтобы оператор GO ТО главного языка, задающий этот Сглавный идентификатор> или Сцелое без знака>, был справедливым при каждом Соператоре SQL>, к которому применяется <объявление встроенной особой ситуации>.

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

1) Непосредственно после выполнения Соператора SQL> в <главной программе встроенного SQL>: возможны следующие-варианты:

a)    Если значение переменной SQbCODE (SQLCOD) равно +100, а Сглавная программа встроенного SQL> содержит <объявление встроенной особой ситуации >, которое применяется к <оператору SQL> и чьим условием является NOT FOUND, а также чьей <реакцией на особую ситуацию> является < переход>, то выполняется оператор GO ТО главного языка, задавая Сглавный идентификатор> или Сцелое без знака> в Сперехо-де>*

b)    Если значение переменной SQLCODE (SQLCOD) является отрицательным числом, а Сглавная программа-встроенного SQL> содержит Собъявление встроенной особой ситуации>, которое применяется к Соператору SQL>, чьим Сусловием> является-SQLERROR;аСре-

— „ ~аг|щие|Гм'особую ситуацию> — Спереход>, то выполняется оператор GO ТО главного языка, задавая Сглавный идентификатор> или Сцелое без знака> для Спе-рехода>.

c)    Если Сглавная программа встроенного SQL> не содержит Собъявления встроенной особой ситуации>* которая применяется к Соператору SQL>, или если она содержит Собъявление встроенной особой ситуации^ которое применяется к Соператору SQL> и дает CONTINUE, то для Соператора SQL> не выполняются никакие дальнейшие операции.

93-

Страница 99

ГОСТ Р ИСО/МЭК 9075—93

ПРИЛОЖЕНИЕ С. <ПРОГРАММА ВСТРОЕННОГО SQL КОБОЛ>

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

■Функция

Задает модуль SQL, встроенный в программу КОБОЛ.

Формат

<программа встроенного SQL КОБОЛ> :: =

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

<определение переменной КОБОЛ>    =

{01|77} <главный идентификатор КОБОЛ> <спецификация типа КОБОЛ> [<символ> ...].

Сглавный идентификатор КОБОЛ> :: =

См. Правило синтаксиса 3..

<спецификация типа КОБОЛ> =

<тип символа КОБОЛ>

| <тип числа КОБОЛ>

|<тип целое КОБОЛ>

<тип символа КОБОЛ> :: =

PIC [TURE] [IS]X (<длина>)

<тип числа КОБОЛ> ::

PIC[TURE][IS1 5{<девятки> [У<девятки>]

|< девятки >v |У<девятки>)

[USAGE [IS]] DISPLAY SIGN LEADING SEPARATE <тип целое КОБОЛ > :: =»

PIC [TURE] [IS]

S <девятки>

[USAGE [IS]] COMP [UTATIONAL]

---<-девятки> : i-= {9[ (<целое без знака >) ]Ъ.. •_____

Правила синтаксиса

1)    <Программа встроенного SQL КОБОЛ> является при- |

•хладной программой, которая состоит из текста КОБОЛ и текста SQL. Текст КОБОЛ должен соответствовать стандартному языку КОБОЛ. Текст SQL должен состоять из одного или более <опе-раторов встроенного SQL> и произвольно из одного или более ) разделов <объявления встроенного SQL>.    '

2)    <Оператор встроенного SQL> в <программе встроенного 1 SQL КОБОЛ > может быть задан везде, где может быть задан * оператор КОБОЛ в Процедурном разделе Спрограммы встроен- ; ного SQL КОБОЛ>. Если оператор КОБОЛ может быть непос- !

1

I

Страница 100

ГОСТ Р ИСО/МЭК 9075-93-

редственно предварен именем параграфа» - то можно непосредственно предварить <оператор встроенного SQL> именем параграфа.

3)    <Главный идентификатор КОБОЛ> — это любое истинное имя переменной КОБОЛ. СГлавный идентификатор КОБОЛ> ‘должен содержаться в Спрограмме встроенного SQL КОБОЛ>1

4)    СОпределение переменной КОБОЛ> является ограниченной формой ввода описания данных КОБОЛ, которая определяет-главную переменную.

a)    СОпределение переменной КОБОЛ> должно быть истинным вводом описания данных в Раздел данных программы, выведенный из <программы встроенного SQL КОБОЛ>.

b)    Произвольная последовательность <символов> в <оп-ределении переменной КОБОЛ > может задавать спецификатор VALUE. Разработчик определяет, могут ли

.    быть    заданы    другие    спецификаторы.    Последователь

ность <символов> должна быть такой, чтобы СОпределение переменной КОБОЛ> было истинным вводом описания данных КОБОЛ.

c)    <Тип символа КОБОЛ> описывает переменную строки символов. Эквивалентным типом данных в SQL является CHARACTER той же длины.

d)    <Тип числа КОБОЛ> описывает точную численную' переменную. Эквивалентным типом данных в SQL является NUMERIC той же точности и масштаба.

e)    <Тип целого КОБОЛ> описывает точную численную переменную. Эквивалентным типом данных в SQL является INTEGER.

Примечание — Этот тип данных сохраняется только дря SQLCODE;. см. Правило синтаксиса 5.

5)    СПрограмма встроенного SQL КОБОЛ> должна содержать переменную с именем SQLCODE, определяемую типом_дан-1_ ных с-исполБзованием~С0МРиТАТ10йАи шаблона S9 (PC), где-PC — определяемая разработчиком точность, заданная для параметров SQLCQJDE в 7.3 «<процедура>».

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

См. приложение А «<главная программа встроенного SQL>*

95^

1

. * \

Страница 101

ТОСТ Р И СО/М ЭК 9075—93

ПРИЛОЖЕНИЕ D. <ПРОГРАММА ВСТРОЕННОГО SQL ФОРТРАНА (Это приложение не является составной частью данного стандарта)

Функция

Задает модуль SQL, встроенный в программу ФОРТРАН.

Формат

<программа встроенного SQL ФОРТРАН> :; =

См. Правила синтаксиса.

Сопределение переменной ФОРТРАН> :: =

Сспецификация типа ФОРТРАН>

Сглавный идентификатор ФОРТРАН>

[{, Сглавный идентификатор ФОРТРАН>}...]

Сглавный идентификатор ФОРТРАН> :: =

См. Правило синтаксиса 4.

Сспецификация типа ФОРТРАН> :: —

CHARACTER [ *Сдлина>]

| INTEGER IREAL

|DOUBLE PRECISION

Правила синтаксиса

1)    СПрограмма встроенного SQL ФОРТРАН> является прикладной программой, которая состоит из текста ФОРТРАН и текста SQL. Текст ФОРТРАН должен соответствовать стандартному языку ФОРТРАН. Текст SQL должен соответствовать одному или более Соператорам встроенного SQL> и произвольно одному или более Сразделам объявления встроенного SQL>.

2)    С Оператор встроенного SQL> может быть задан тогда, когда можно задать исполнительный оператор ФОРТРАН. сОпе-ратор встроенного SQL>, предшествующий какому-либо исполнительному оператору ФОРТРАН в содержащей его С программе встроенного SQL ФОРТРАН>, не должен иметь номер оператора "ФОРТРАНУ ^ других слузаях," ееяи"Ояерэтор ФОРТРАН мог-•бы иметь номер оператора, то Соператор встроенного SQL> может иметь номер оператора.

3)    Для Соператоров встроенного SQL> большое значение имеют пробелы. Правила для-Сразделителей> в Соператоре встроенного SQL> такие же, как приведены в 5.3 ^Слексема>».

4)    СГлавный идентификатор ФОРТРАН> — эт^ любое справедливое имя переменной языка ФОРТРАН. СГлавный идентификатор ФОРТРАН> должен содержаться в Сопрограмме встроенного SQL ФОРТРАН>.

95

Страница 102

ГОСТ Р ИСО/МЭК 9075-93

5)    СОпределение переменной ФОРТРАН> являете»-ограниченной формой оператора типа ФОРТРАН, который задает глав-лую переменную.

a)    СОпределение переменной ФОРТРАН> должно быть достоверным оператором типа ФОРТРАН в программе, выведенной из Спрограммы встроенного SQL ФОРТРАНА

b)    CHARACTER описывает переменную строки символов.

Эквивалентным типом данных SQL является CHARACTER такой же длины.    •    -    •    .

c)    ЦЕЛОЕ описывает целую численную переменную. Эквивалентным типом данных SQL является INTEGER.

d)    REAL описывает приближенную числовую переменную. Эквивалентным типом данных в SQL являeтcяJ^EAL.

e)    DOUBLE PRECISION описывает приближенную числовую переменную. Эквивалентным типом- данных SQL является DOUBLE PRECISION.

6)    <Программа встроенного SQL ФОРТРАН> должна содержать переменный поименованный SQLCOD, определенный с помощью типа данных INTEGER. В Спрограмме встроенного SQL ФОРТРАН> SQLCOD должен использоваться в качестве' сокращения для SQLCODE.

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

См. Приложение А, «<главная программа встроенного SQL>.

Страница 103

ГОСТ Р ИСО/МЭК fli)75—93

ПРИЛОЖЕНИЕ Е.< ПРОГРАММА ВСТРОЕННОГО SQL Паскаль>

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

Функция

Задает модуль SQL, встроенный в программу Паскаль.

Формат

<программа встроенного SQL Паскаль> :: =

См. Правила синтаксиса...

Сопределение переменной Паскаля > :: =

<главный идентификатор Паскаля>

[{, Сглавный идентификатор Паскаля>} .. .]:

< спецификация типа Паскаля>

<главный идентификатор Паскаля> :: «

См. Правило синтаксиса 3.

<спецификация типа Паскаля> :: =

PACKED ARRAY <левая скобка> I <длина>

<правая скобка> OF CHAR

|INTEGER I REAL Слевая скобка> :: — [

< правая скобка > :: = ]

Правила синтаксиса

1)    <Программа встроенного SQL Паскаль>' является при-кладной программой, которая состоит из текста на языке Паскаль и текста на языке SQL. Текст Паскаль должен соответствовать стандартному языку Паскаль. Текст SQL должен состоять из одного или более <операторов встроенного SQL> и произвольно одного или более <разделов объявления встроенного SQL>.

2)    <Оператор встроенного SQL> может быть задан там, где может быть задан оператор Паскаля. <Оператор встроенного SQL> может предваряться меткой Паскаля.

3)    СГлавный идентификатор Паскаля> .— это любой досто* -----верный-идентификатор-переменная.Паскаля... <,Главный идентифи-

катор Паскаля> должен содержаться в <программе' встроенного‘ SQL Паскаль>.

4)    <Определение переменной Паскаля> определяет главную переменную.

a)    СОпределение переменной Паскаля> должно быть достоверным объявлением переменной Паскаля, в программе, выведенной из Спрограммы встроенного SQL Паскаль>.

b)    PACKED ARRAY [1.. <длина>] OF CHAR\ описывает-переменную строки символов. Эквивалентным типом данных в SQL является CHARACTER такой же длины.

98

Страница 104

ГОСТ Р ИСО/МЭК 9075—93

c)    INTEGER описывает точную числовую переменную. Эквивалентным типом данных в SQL является INTEGER.

d)    REAL описывает приближенную числовую переменную. Эквивалентным типом данных в SQL является REAL.

5) <Программа встроенного SQL Паскаль> должна содео--жать пепеменный поименованный SQLCODE, определенный с помощью типа данных INTEGER.

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

См. Приложение А, «<главная программа встроенного SQL>».

Страница 105

ГОСТ Р ИСО/МЭК 9075-93

ПРИЛОЖЕНИЕ F. < ПРОГРАММА ВСТРОЕННОГО SQL ПЛ/1>

(Это Приложение не является составной частью данного стандарта)'

Функция

Задает модуль SQL, встроенный в программу ПЛ/1.

Формат

Спрограмма встроенного SQL ПЛ/1> :: =

См. Правила синтаксиса.

Сопределение переменной ПЛ/1> :: =

(DCL | DECLARE}

{<главный идентификатор ПЛ/1>

|<главный идентификатор ПЛ/1>

[{, <главный идентификатор ПЛ/1 >}...]}

< спецификация типа ПЛ/1>

[<символ> ...]

<главный идентификатор ПЛ/1> :: =

См. Правило синтаксиса 3.

Сспецификация типа PL/1 > :: =

CHAR [ACTER] <длина>

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

[точность> Г, <масштаб>]

| {BIN [ARY] FIXED | FIXED BIN [ARY]} Г(<точность>)]

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

(<точность>)

Правила синтаксиса

1)    СПрограмма встроенного SQL ПЛ/1> является прикладной программой, которая состоит из текста ПЛ/1 и текста SQL. Текст ПЛ/1 должен соответствовать стандарту ПЛ/1. Текст SQL должен-сосюять--из_одного или более-<операторов встроенного, SQL> и произвольно одного или более <разделов объявления встроенного SQL>.

2)    <Оператор встроенного SQL> может быть задан тогда,

когда может быть задан оператор ПЛ/1 в процедурном блоке. Если оператор ПЛ/1 может включать префиксную метку, то <опе-ратор встроенного SQL> может непосредственно предваряться префиксной меткой.    г

3)    <Главный идентификатор ПЛ/1> является любым достоверным идентификатором переменной ПЛ/1. < Главный идентификатор ПЛ/1> должен содержаться в <программе встроенного SQL ПЛ/1>.

100

Страница 106

ГОСТ Р ИСО/МЭК 907S-83

4)    СОпределение переменной ПЛ/1> определяет одну или <$олее главных переменных.

a)    < Определение переменной ПЛ/1> должно быть достоверным объявлением данных в ПЛ/1 в программе, выводимой из Спрограммы встроенно'го SQL ПЛ/1>.

b)    <Определение переменной ПЛ/1> должно задавать скалярную переменную, а не матрицу или структуру.

c)    Произвольная строка <символов> в Сопределении переменной ПЛ/1> может задавать спецификатор INITIAL. Разработчик определяет, могут ли задаваться другие спецификаторы. Последовательность <символов> должна быть такой, чтобы <определение переменной ПЛ/1> было достоверным оператором ПЛ/1 DECLARE.

<1) CHAR[ACTER] описывает переменную строку символов. Эквивалентным типом данных в SQL является CHARACTER той же длины.

e)    FIXED DEC[IMAL] описывает точную числовую переменную. <Масштаб> не должна быть больше, чем <точность>. Эквивалентным типом данных SQL является DECIMAL с той же <точностью> и <масшта* бом>.

f)    FLOAT BIN[ARY] описывает приближенную числовую переменную. Эквивалентным типом данных является FLOAT с той же <точностью>.

g)    FIXED BIN[ARY] описывает точную числовую переменную. Эквивалентным типом данных SQL является INTEGER.

Примечание — Этот тип данных сохраняется только для SQLCODE; см. правило синтаксиса 5.

5)    <Программа встроенного SQL ПЛ/1> должна содержать переменный поименованный SQLCODE, определенный с помощью типа данных FIXED BINARY (РР), где РР — определяемая разработчиком __<точность>, заданная для параметров SQLCODE в уГЗ, «< процедура>».

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

См. Приложение А, «Сглавная программа встроенного SQL>».

101

Страница 107

ГОСТ Р ИСО/МЭК 9075-93

УКАЗАТЕЛЬ

1— операция;

2    — все; ,

3    — функция полного набора;

4    — приближенный числовой литерал;

5    — приближенный числовой тип;

6    — идентификатор полномочий;

7    — предикат интервала;

8    — логический коэффициент;

9    — логическое первичное;

10    — логический терм;

11    — символ;

12    — представление символов;

13    — литерал строки символов;

14    — тип строки символов;

15    — определение ограничения проверки;

16    — оператор открытия;

17    — тип символа КОБОЛ;

18    —главный идентификатор КОБОЛ;

19    — тип целого КОБОЛ;

20    — числовой тип КОБОЛ;

21    — спецификация типа КОБОЛ;

22    — определение переменной КОБОЛ;

23    — ограничение столбца;

24    — определение столбца;

25    — имя столбца;

26— спецификация столбца;

27    — комментарий;

28    — начало комментария;

29    —оператор блокировки;

30    — операция сравнения;

-Л1—дредикат_сравнения;

32 — условие;

33—имя корреляции;

34    — имя курсора;

35    — спецификация курсора;

36    — тип данных;

37    — объявление курсора;

38    — спецификатор умолчания;

39    — оператор удаления: по положению;

40    — оператор удаления: поиск;

41    — лексема — ограничитель;

42    — цифра;

102

Страница 108

ГОСТ Р ИСО/МЭК 9075-93

43    — функция набора различимых объектов;

44    — объявление встроенной особой ситуации;

45    — объявление начала встроенного SQL;

46    — программа встроенного SQL КОБОЛ;

47    — объявление окончания встроенного SQL;

48    — программа встроенного SQL ФОРТРАН;

49    — главная программа встроенного SQL;

50    — программа встроенного SQL Паскаль;

51—программа встроенного SQL ПЛ/1;

52    — оператор встроенного SQL;

53    — имя встроенной переменной;

54    —спецсимвол;

55    — литерал целого;

56    — тип целого;

57    — операция особой ситуации;

58    — предикат существования;

59    — порядок;

60    — коэффициент;

61    —оператор' выборки;

62    — перечень целей выборки;

63—главный идентификатор ФОРТРАН;

64    — спецификация типа ФОРТРАН;

65    — определение переменной ФОРТРАН;

66    —спецификатор отображения;

67— переход;

68 — перечень предоставления столбцам привилегий:

69    — получатель привилегий;

70    —спецификатор группировки;

71—спецификатор выборки групп;

72    —главный идентификатор;

73    — определение главной переменной;

74    — идентификатор;

-75^—ттредтткат принадлежности;

76 — перечень значений принадлежности;

77 — параметр—признак;    :?■

78    — переменная — признак;

79    — перечень столбцов вставки;

80    — оператор вставки;

81    —вставить значение;

82 — перечень значений вставки;    \

83    — ключевое слово;

84    — спецификатор языка;

85    — левая скобка;

86    — длина;

103

Страница 109

ГОСТ Р ИСО/МЭК 9075—93

87    — буква;

88    — буква или цифра;

89    — предикат подобия;

90    — литерал;

91    —строчная буква;

92    — мантисса;

93— модуль;

94 — спецификатор полномочий модуля;

95—идентификатор полномочий модуля;

96    — имя модуля;

97    — спецификатор имени модуля;

98—новая строка;

99 —девятки;

100—лексема, не являющаяся ограничителем;

101    —символ, отличныи от кавычс*,

102    — предикат нуля;

103    — числовой литерал;

104    — предметный столбец: по положению;

105    — предметный столбец: поиск;

106    — оператор открытия;

107    — спецификатор порядка;

108    —объявление параметра;

109    — имя параметра;

110    — спецификация параметра;

111—главный идентификатор Паскаля;

112    — спецификация типа Паскаль;

113    — определение переменной Паскаля;

114    — структура;

115    — главный идентификатор ПЛ/1;

116    — спецификация типа ПЛ/1;

117    — определение переменной ПЛ/1;

118    —точность;

~ М9 — предикат;------

120 — первичный;

121—определение привилегий}

122    — привилегии;

123    —процедура;

124    — имя процедуры;

125    — префикс;

126    — квантифицированный предикат;

127    —квантор;

128    —выражение занроса;

129    — спецификация запроса;

130    — терм запроса;

Страница 110

131    —кавычки;

132    — перечень столбцов ссылок;

133    — таблицы и столбцы, к которым обращаются;

134    —спецификация ссылок;

135    — обращающиеся столбцы;

136    — определение ограничений на ссылки;

137    — спецификация результата;

138    — правая скобка;

139    — оператор возврата;

140    — масштаб;

141    —схема;

142    — спецификатор полномочий схемы;

143    — идентификатор полномочий схемы;

144    — элемент схемы;

145    — условие поиска;

146    — перечень выбора;

147    — оператор выбора;

148    —перечень целей выбора;

149    — разделитель;

150    — спецификатор набора: по положению;

151    —спецификатор набора: поиск;

152    —спецификация функции набора;

153    — целое со знаком;    4

154    — некоторый;

155    — спецификация упорядочения;

156    — пробел;

157    — спецсим вол;

158    —префикс SQL;

159    —оператор SQL;

160    — терминатор SQL;

161—параметр SQLCODE;

162 —подзапрос; __.    _    .........

- ^тэтрёДёлёнйе'ограничений таблицы;

* 164 — определение таблицы;

165    — элемент таблицы;

166    —табличное выражение;

167    — идентификатор таблицы;

168    —имя таблицы;

169    — табличная. ссылка;

\ 170 — цель;

! 171—спецификация цели;

{ 172 —терм;

173    — лексема;

174    — подчеркивание;

Страница 111

ГОСТ Р ИСО/МЭК 0076—93

.175 — перечень столбцов уникальности;

176    — определение ограничения уникальности;

177    — спецификация уникальности; •

178    —целое без знака;

179    — оператор корректировки: по положению;

180    — оператор корректировки: поиск;

181    — прописная буква;

182    —выражение значения;

183    — спецификация значения;

184    — спецификация переменной;

185    — перечень столбцов представления;

186    — определение представления;

187    — спецификатор выборки;

188    — раздел объявления встроенного SQL.

Страница 112

ГОСТ Р ИСО/МЭК 9075—9^

УДК 681.3.04:006.354

П 85:

Ключевые слова: обработка данных, взаимосвязь открытых систем,, базы данных, языки программирования.