Язык модулей SQL
Категория реферата: Рефераты по информатике, программированию
Теги реферата: доклади, конспект урока изложения
Добавил(а) на сайт: Zakrjatin.
Предыдущая страница реферата | 1 2 3 4 | Следующая страница реферата
Курсор должен быть в открытом состоянии. Курсор переводится в закрытое состояние и разрушается копия <спецификации курсора> (<cursor soecificaton>). 8.2. <Оператор фиксации> (<commit statement>)
Функция
Заканчивает текущую транзакцию с фиксацией.
Формат
<commit statement>::= COMMIT WORKСинтаксические правила
Нет.
Общие правила
Текущая транзакция завершается. Закрываются любые курсоры, открытые данной транзакцией. Любые изменения базы данных, сделанные в текущей транзакции, фиксируются. 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> ::= <column specification> [ASC | DESC]Синтаксические правила
<Имя курсора> (<cursor name>) не должно быть идентичным любому другому <имени курсора> (<cursor name>), специфицируемого в каком-либо другом <объявлении курсора> (<declare cursor>) того же модуля. Любое <имя параметра> (<parameter name>), содержащееся в <спецификации курсора> (<cursor specification>), должно быть определено в <объявлении параметра> (<paremeter declaration>) <процедуры> (<procedure>) объемлющего <модуля> (<module>), который содержит <оператор открытия> (<open statement>), специфицирующий это <имя курсора> (<cursor name>).Замечание: Cм. Синтаксическое правило 7.1, "<модуль> (<module>)". Пусть Т обозначает таблицу, специфицированную в <спецификации курсора> (<cursor specification>).
a) Если указано ORDER BY, то Т является только читаемой таблицей со специфицированным порядком сортировки.
b) Если не указаны ни ORDER BY ни UNION и <спецификация запроса> (<query specification>) является из меняемой (updatable), то Т - изменяемая таблица.
c) Иначе Т - только читаемая таблица.
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. Если указано 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>).
Общие правила
a) Если Т изменяемая (updatable) таблица, то курсор ассоциируется с именованной таблицей, идентифицируемой <именем таблицы> (<table name>) из <раздела from> (<from clause>). Пусть В обозначает эту именованную таблицу. Для каждой строки в Т существует соответствующая строка в В, из которой получена строка таблицы Т. Когда курсор установлен на строку таблицы Т, курсор также установлен на соответствующую строку таблицы В.
b) В противном случае курсор не ассоциируется с именованной таблицей.
a) Если не указано UNION, то Т - это результат указанной <спецификации запроса> (<query specification>.
b) Если UNION указано, то пусть для каждого указанного UNION Т1 и Т2 обозначают результаты <выражения запроса> (<query expression>) и <терма запроса> (<query term>). Результат UNION фактически порождается следующим образом: i) Инициализировать результат как пустую таблицу.
ii) Занести в результат каждую строку Т1 и каждую строку Т2
iii) Если не указано ALL , то удалить все излишние дубликаты строк из результата.
a) Если не указано ORDER BY, то:
i) Порядок строк в Т определяется реализацией.
ii) Порядок строк может может быть разным в разных транзакциях.
iii) Порядок строк Т, устанавливаемый при открытии курсора, будет таким же при следующем открытии курсора в этой же транзакции при условии, что: Отсутствуют сторонние изменения каких-либо таблиц, указанным в спецификации курсора. Упорядоченный набор значений параметров, передаваемых в <процедуру> (<procedure>), содержащую <оператор открытия> (<open statement>), является одинаковым в обоих случаях.
Если эти условия не удовлетворяются, то упорядочение строк в Т может различаться при последовательных открытиях курсора в одной транзакции.
b) Если ORDER BY указано, то Т обладает порядком сортировки:
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>Синтаксические правила
Применимые <привилегии> (<privileges>) для <имени таблицы> (<table name>) должны включать DELETE.Замечание: "Применимые <привилегии> (<privileges>)" для <имени таблицы> (<table name>) определяются в 6.10, "<Определение привилегий> (<privileges definition>). Содержащий <модуль> (<module>) должен содержать <объявление курсора> (<declare cursor>) CR с тем же <именем курсора> (<cursor name>), что и <имя курсора> (<cursor name>) в <операторе удаления: позиционном> (<delete statement: positioned>). Таблица, на которую указывает CR, не должна быть только читаемой. Пусть Т обозначает таблицу, идентифицируемую <именем таблицы> (<table name>). Т должна быть таблицей, идентифицируемой в первом <разделе from> (<from clause>) в <спецификации курсора> (<cursor specification>) CR.
Общие правила
Курсор CR должен быть установлен на строку. Строка, из которой получена текущая строка CR, удаляется. 8.5. <Оператор удаления: поисковый> (<delete statement: searched>)Функция
Удаляет строки таблицы.
Формат
<delete statement: searched> ::= DELETE FROM <table name> WHERE [<search condition>]Синтаксические правила
Применимые <привилегии> (<privileges>) для <имени таблицы> (<table name>) должны включать DELETE.Замечание: Применимые <привилегии> (<privileges>) для <имени таблицы> (<table name>) определяются в 6.10, "<определение привилегий> (<privileges definition>)". Пусть Т обозначает таблицу, идентифицируемую <именем таблицы> (<table name>). Т не должна быть только читаемой таблицей или таблицей, которая идентифицируется в <разделе from> (<from clause>) любого <подзапроса> (<subquery>), содержащегося в <условии поиска> (<search condition>). Область действия <имени таблицы> (<table name>) - целиком <оператор удаления: поисковый> (<delete statement: searched>.
Общие правила
а) Если не указано <условие поиска> (<search condition>), то удаляются все строки таблицы Т.
б) Если указано <условие поиска> (<search condition>), то условие применяется к каждой строке Т с <именем таблицы> (<table name>), связанным с этой строкой, и все строки, для которых результат <условия поиска> (<search condition>) есть true, удаляются. Каждый <подзапрос> (<subquery>) в <условии поиска> (<search condition>) реально выполняется для каждой строки T и результаты используются в применении <условия поиска> (<search condition>) к данной строке Т. Если любой выполняемый <подзапрос> (<subquery>) содержит внешнюю ссылку на столбец Т, то эта ссылка указывает на значение этого столбца в данной строке Т.
Замечание: "Внешняя ссылка" определяется в 5.7, "<спецификация столбца> (<column specification>)". 8.6. <Оператор чтения> (<fetch statement>)
Функция
Устанавливает курсор на следующую строку таблицы и выбирает значения из этой строки.
Формат
Рекомендуем скачать другие рефераты по теме: реферат загрязнение, купить диплом высшее.
Предыдущая страница реферата | 1 2 3 4 | Следующая страница реферата