Доклад: Язык модулей SQL

<Оператор вставки> (<insert statement>)

Функция

Создает новые строки в таблице

Формат

<insert statement> ::=

INSERT INTO <table name> [(<insert column list>)]

{VALUES (<insert value list>)|<query specification>}

<insert column list> ::=

<column name> [{,<column name>}...]

<insert value list> ::=

<insert value> [{,<insert value>...]

<insert value> ::=

<value specification> | NULL

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

  1. Применимые <привилегии> (<privileges>) к <имени таблицы> (<table name>) должны включать INSERT.
    Замечание: Применимые <привилегии> (<privileges>) для <имени таблицы> (<table name>) определяются в 6.10, "<определение привилегий> (<privileges definition>)".
  2. Пусть Т обозначает таблицу, идентифицируемую <именем таблицы> (<table name>). Т не должна быть только читаемой таблицей или таблицей, которая идентифицируется в <разделе from> (<from clause>) <спецификации запроса> (<query specification>) или какого-либо <подзапроса> (<subquery>), содержащегося в <спецификации запроса> (<query specification>).
  3. Каждое <имя столбца> (<column name>) в <списке столбцов вставки> (<insert column list>) должно идентифицировать столбец Т, и один и тот же столбец не должен быть идентифицирован более одного раза. Отсутствие <списка столбцов вставки> (<insert column list>) является неявной спецификацией <списка столбцов вставки> (<insert column list>), который идентифицирует все столбцы Т в порядке возрастания их порядковых позиций внутри Т.
  4. Столбец, идентифицированный в <списке столбцов вставки> (<insert column list>), является объектным столбцом.
  5. Если i-ый элемент <оператора вставки> (<insert statement>) не является неопределенным <значением вставки> (<insert statement>), то:
    а) Если тип данных столбца таблицы Т, указанный i-ым <именем столбца> (<column name>), является типом символьных строк длины L, то тип данных i-ого элемента <оператора вставки> (<insert statement>) должен быть типом символьных строк с длиной меньшей или равной L.
    b) Если тип данных столбца таблицы Т, указанный i-ым <именем столбца> (<column name>), является типом точных чисел, то тип данных i-ого элемента <оператора вставки> (<insert statement>) должен быть типом точных чисел.
    c) Если тип данных столбца таблицы Т, указанный i-ым <именем столбца> (<column name>), является типом приблизительных чисел, то тип данных i-ого элемента <оператора вставки> (<insert statement>) должен быть типом приблизительных чисел или типом точных чисел.

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

  1. Строка вставляется по следующим шагам:
    а) Фактически создается возможная строка, как это указано в Общих правилах 6.4, "<Раздел умолчания> (<default clause>)". Если Т - это базовая таблица В, то возможная строка включает каждый столбец В. Если Т - это представляемая таблица, то возможная строка включает каждый столбец базовой таблицы В, из которой порождается Т.
    b) Для каждого объектного столбца в возможной строке его значение заменяется на вставляемое значение.
    c) Возможная строка вставляется в таблицу В.
  2. Если Т - представляемая таблица, определенная через <определение представления> (<view definition>) с "WITH CHECK OPTION", то если <спецификация запроса> (<query specification>), содержащаяся в <определении представления> (<view definition>), включает <раздел where> (<where clause>), не содержащийся в <подзапросе> (<subquery>), то <условие поиска> (<search condition>) этого <раздела where> (<where clause>) должно быть истинным для возможной строки.
  3. Если указывается <список вставляемых значений> (<insert value list>), то:
    а) Если i-ое <вставляемое значение> (<insert value>) из <списка вставляемых значений> (<insert value list>) является <спецификацией значения> (<value specification>), то значение столбца возможной строки, соответствущего i-ому объектному столбцу, является значением этой <спецификации значения> (<value specification>).
    b) Если i-ое <вставляемое значение> (<insert value>) из <списка вставляемых значений> (<insert value list>) является неопределенным значением, то значение столбца возможной строки, соответствующего i-ому объектному столбцу, является неопределенным значением.
  4. Если указывается <спецификация запроса> (<query specification>), то пусть R обозначает результат этой <спецификации запроса> (<query specification>). Если R пуст, то параметру SQLCODE присваивается значение 100, и никакая строка не вставляется. Число созданных возможных строк равно мощности R. Вставляемые значения одной возможной строки являются значениями одной строки R, и значения в одной строке R являются вставляемыми значениями одной возможной строки.
  5. Пусть V обозначает строку R или последовательность значений специфицированных <списком вставляемых значений> (insert value list>). Тогда i-ое значение V является вставляемым значением объектного столбца, идентифицируемого i-ым <именем столбца> (<column name>) в <списке вставляемых столбцов> (<insert column list>).
  6. Пусть С обозначает объектный столбец. Пусть v обозначает не неопределенное вставляемое значение С.

8.8. <Оператор открытия> (<open statement>)

Функция

Открывает курсор

Формат

<open statement> ::=

OPEN <cursor name>

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

    Содержащий <модуль> (<module>) должен содержать <объявление курсора> (<declare cursor>) CR с тем же <именем курсора> (<cursor name>), что и <имя курсора> (<cursor name>) в <операторе открытия> (<open statement>).

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

  1. Курсор CR должен быть в закрытом состоянии.
  2. Пусть S обозначает <спецификацию курсора> (<cursor specification> курсора CR.
  3. Курсор CR переводится в открытое состояние следующими шагами:
    а) Фактически создается копия S, в которой каждая <спецификация цели> (<target specification>) заменяется на значение идентифицируемой цели.
    b) Если S специфицирует только читаемую таблицу, то эта таблица фактически создается в соответствии со спецификацией - копией S.
    c) Курсор CR переводится в открытое состояние и его позиция устанавливается перед первой строкой таблицы.

8.9. <Оператор отката> (<rollback statement>)

Функция

Завершает текущую транзакцию с откатом.

Формат

<rollback statement> ::=

ROLLBACK WORK

К-во Просмотров: 910
Бесплатно скачать Доклад: Язык модулей SQL