Мегаобучалка Главная | О нас | Обратная связь


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



2019-05-23 209 Обсуждений (0)
Синтаксические правила 0.00 из 5.00 0 оценок




1. Объемлющий модуль должен содержать объявление курсора, в котором используется это же имя курсора.

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

1. Курсор должен быть в открытом состоянии.

2. Курсор переводится в закрытое состояние и разрушается копия <спецификации курсора> (<cursor soecificaton>).

8.2. <Оператор фиксации> (<commit statement>)

Функция

Заканчивает текущую транзакцию с фиксацией.

Формат

<commit statement>::=

         COMMIT WORK

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

Нет.

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

1. Текущая транзакция завершается.

2. Закрываются любые курсоры, открытые данной транзакцией.

3. Любые изменения базы данных, сделанные в текущей транзакции, фиксируются.

8.3. <Объявление курсора> (<declare cursor>)

Функция

Определяет курсор.

Формат

<declare cursor> ::=

          DECLARE <cursor name> CURSOR

          FOR <cursor specification>

<cursor specification> ::=

          <query expression> [<order by clause>...]

<query expression> ::=

           <query term>

         | <query expression> UNION [ALL] <query term>

<query term> ::=

          <query specification> | (<query expression>)

<order by clause> ::=

          ORDER BY <sort specification>

                   [{,<sort specification>}...]

<sort specification> ::=

         { <unsigned integer> | <column specification> }

          [ASC | DESC]

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

1. <Имя курсора> (<cursor name>) не должно быть идентичным любому другому <имени курсора> (<cursor name>), специфицируемого в каком-либо другом <объявлении курсора> (<declare cursor>) того же модуля.

2. Любое <имя параметра> (<parameter name>), содержащееся в <спецификации курсора> (<cursor specification>), должно быть определено в <объявлении параметра> (<paremeter declaration>) <процедуры> (<procedure>) объемлющего <модуля> (<module>), который содержит <оператор открытия> (<open statement>), специфицирующий это <имя курсора> (<cursor name>).
Замечание: Cм. Синтаксическое правило 7.1, "<модуль> (<module>)".

3. Пусть Т обозначает таблицу, специфицированную в <спецификации курсора> (<cursor specification>).

4.
a) Если указано ORDER BY, то Т является только читаемой таблицей со специфицированным порядком сортировки.
b) Если не указаны ни ORDER BY ни UNION и <спецификация запроса> (<query specification>) является из меняемой (updatable), то Т - изменяемая таблица.
c) Иначе Т - только читаемая таблица.

5.
a) Если не указано UNION, то описанием Т является описание <спецификации запроса> (<query specification>).
b) Если указано UNION, то пусть для каждого специфицированного UNION Т1 и Т2 обозначают таблицы, которые специфицированы в <выражении запроса> (<query expression>) и <терме запроса> (<query term>). <Список выборки> (<select list>) в спецификациях Т1 и Т2 должен состоять из "*" или <спецификаций столбцов> (<column specification>). Кроме имен столбцов, описания Т1 и Т2 должны быть идентичными. Все столбцы результата неименованы. За исключением <имен столбцов> (<column name>), описание результата такое же, как описание Т1 и Т2.

6. Если указано ORDER BY, то каждая <спецификация сортировки> (<sort specification>) в <разделе order by> (<order by clause>) должна идентифицировать столбец таблицы Т.
a) Если <спецификация сортировки> (<sort specification>) содержит <спецификацию столбцов> (<column specification>), то <спецификация сортировки> (<sort specification>) идентифицирует столбец Т с именем, указанным в этой <спецификации столбца> (<column specification>).
b) Если <спецификация сортировки> (<sort specification>) содержит <целое без знака> (<unsigned integer>), то это целое должно быть больше нуля и не более степени таблицы T. <Спецификация сортировки> (<sort specification>) указывает столбец Т с порядковой (ordinal) позицией, специфицируемой этим <целым без знака> (<unsigned integer>).

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

1.
a) Если Т изменяемая (updatable) таблица, то курсор ассоциируется с именованной таблицей, идентифицируемой <именем таблицы> (<table name>) из <раздела from> (<from clause>). Пусть В обозначает эту именованную таблицу. Для каждой строки в Т существует соответствующая строка в В, из которой получена строка таблицы Т. Когда курсор установлен на строку таблицы Т, курсор также установлен на соответствующую строку таблицы В.
b) В противном случае курсор не ассоциируется с именованной таблицей.

2.
a) Если не указано UNION, то Т - это результат указанной <спецификации запроса> (<query specification>.
b) Если UNION указано, то пусть для каждого указанного UNION Т1 и Т2 обозначают результаты <выражения запроса> (<query expression>) и <терма запроса> (<query term>). Результат UNION фактически порождается следующим образом: i) Инициализировать результат как пустую таблицу.

o
ii) Занести в результат каждую строку Т1 и каждую строку Т2
iii) Если не указано ALL , то удалить все излишние дубликаты строк из результата.

3.
a) Если не указано ORDER BY, то:

o
i) Порядок строк в Т определяется реализацией.
ii) Порядок строк может может быть разным в разных транзакциях.
iii) Порядок строк Т, устанавливаемый при открытии курсора, будет таким же при следующем открытии курсора в этой же транзакции при условии, что:

1. Отсутствуют сторонние изменения каких-либо таблиц, указанным в спецификации курсора.

2. Упорядоченный набор значений параметров, передаваемых в <процедуру> (<procedure>), содержащую <оператор открытия> (<open statement>), является одинаковым в обоих случаях.
Если эти условия не удовлетворяются, то упорядочение строк в Т может различаться при последовательных открытиях курсора в одной транзакции.


b) Если ORDER BY указано, то Т обладает порядком сортировки:

o
i) Порядок сортировки является последовательностью групп сортировки. Группа сортировки - это последовательность строк, в которых все значения столбцов сортировки идентичны. Более того, группа сортировки может быть последовательностью групп сортировки.
ii) Мощность последовательности и порядковая позиция каждой группы сортировки определяется значениями наиболее значащих столбцов сортировки. Мощность последовательности является минимальным числом групп сортировки таких, что для каждой группы сортировки с числом строк больше единицы все значения столбца сортировки идентичны.
iii) Если порядок сортировки основывается на дополнительных столбцах сортировки, то каждая группа сортировки с числом строк больше единицы является последовательностью групп сортировки. Мощность каждой последовательности и порядковая позиция каждой группы сортировки внутри каждой последовательности определяется значениями следующего наиболее значащего столбца сортировки. Мощность каждой последовательности является минимальным числом групп сортировки таких, что для каждой группы с числом строк больше единицы все значения этого столбца сортировки идентичны.
iv) Предыдущий параграф применяется по очереди к каждому дополнительному столбцу сортировки. Если группа сортировки состоит из нескольких строк и не является последовательностью групп сортировки, то порядок строк в группе сортировки не определен.
v) Пусть С обозначает столбец сортировки и S - последовательность, которая определяется значениями С.
vi) Направление сортировки связывается с каждым столбцом сортировки. Если направление для С задано по возрастанию, то первая группа сортировки S содержит наименьшее значение С и каждая последующая группа сортировки содержит значение С большее, чем значение С в предшествующей группе сортировки. Если направление для С задано по убыванию, то первая группа сортировки S содержит наибольшее значение С и каждая последующая группа сортировки содержит значения С меньшее, чем значение С в предшествующей группе сортировки.
vii) Упорядоченность определяется правилами сравнения, указанными в 5.11, "<Предикат сравнения"> (<comparison predicate>). Порядок неопределенных значений по отношению к не неопределенным значениям определяется реализацией, но должен быть либо строго больше либо строго меньше всех не неопределенных значений.
viii) <Спецификация сортировки> (<sort specification>) специфицирует столбец сортировки и направление. Столбец сортировки - это столбец, указываемый <целым без знака> (<unsigned integer>) или <спецификацией столбца> (<column specification>). <Целое без знака> (<unsigned integer>) i ссылается на i-ый столбец Т. <Спецификация столбца> (<column specification>) указывает именованный столбец.
ix) Если в <спецификации сортировки> (<sort specification>) указано DESC, то направление сортировки, специфицируемое этой <спецификацией сортировки> (<sort specification>), является направлением по убыванию. Если указано АSC или не указано ни ASC, ни DESC, то направление сортировки для этого столбца сортировки является направлением по возрастанию.
x) Последовательность <спецификаций сортировки> (<sort specification>) определяет относительную значимость сортируемых столбцов. Столбец сортировки, указанный в первой <спецификации сортировки> (<sort specification>), наиболее значащий и каждый последующий столбец сортировки является менее значащим, чем предыдущий столбец сортировки.

8.4. <Оператор удаления: позиционный> (<delete statement: positioned>)

Функция

Удаляет строку таблицы.

Формат

<delete statement: positioned> ::=

           DELETE FROM <table name>

           WHERE CURRENT OF <cursor name>



2019-05-23 209 Обсуждений (0)
Синтаксические правила 0.00 из 5.00 0 оценок









Обсуждение в статье: Синтаксические правила

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (209)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)