Внимание! студентцентр.рф не продает дипломы, аттестаты об образовании и иные документы об образовании. Все услуги на сайте предоставляются исключительно в рамках законодательства РФ.
Реферат с присвоенным номером '832561' был написан на тему 'Язык модулей SQL' по предмету 'Программирование' по цене 650 руб. Заявка поступила 04.06.2016 специалисты приступили к выполнению заказа незамедлительно и к 07.06.2016 работа была полностью выполнена и передана клиенту. Защита работы прошла успешно.
Реферат на тему: Язык модулей SQL - пример выполненной работы
Язык модулей SQL
7.1 <Модуль> ()
Функция
Определяет модуль.
Формат
::=
[...]
< procedure > ...
::=
LANGUAGE { COBOL | FORTRAN | PASCAL | PLI }
::=
AUTHORIZATION
::=
Синтаксические правила
Для каждого <определения> () в <модуле> () должна существовать ровно одна <процедура> () в этом <модуле> (), которая содержит <оператор открытия> () со спецификацией <имени> (), объявленного в <объявлении> ().
<Модуль> () должен быть ассоциирован с прикладной программой при ее выполнения. Прикладная программа должна быть ассоциирована не более чем с одним <модулем> ().
Общие правила
Если <раздел> () <модуля> () специфицирует COBOL (соответственно FORTRAN, PASCAL, PLI) и если агент, выполняющий вызов <процедуры> () этого <модуля> (), не является стандартной программой на языке COBOL (соответственно FORTRAN, Pascal, PL/1), то результат неопределен.
После выполнения агентом на языке программирования последнего вызова <процедуры> () в <модуле> () неявно выполняется <оператор> () или <оператор> (). Выбор одного из этих <операторов> () определяется реализацией. Если имеет место невосстанавлваемая ошибка, то СУБД должна выполнить <оператор отката> ().
7.2. <Раздел имени модуля> ()
Функция
Задает имя <модуля> ().
Формат
::=
MODULE []
Синтаксические правила
<Имя модуля> () должно отличаться от <имени> () любого другого <модуля> () в том же окружении. Понятие окружения определяется в реализации.
Общие правила
<Раздел имени модуля> () определяет необязательный <идентификатор> () как <имя> (), определяющее содержащий <модуль> () в данном окружении.
7.3. <Процедура> ()
Функция
Определяет процедуру и оператор языка SQL.
Формат
::=
PROCEDURE
...;
;
::=
|
::=
SQLCODE
::=
|
|
|
|
|
|
|
|
|
|
Синтаксические правила
<Имя процедуры> () должно отличаться от <имени> () любой другой <процедуры> () в содержащем модуле.
<Имя параметра> в каждом <объявлении> () в <процедуре> () должно отличаться от <имени> () любого другого <объявления параметра> () в этой процедуры.
Любое <имя> (), содержащееся в <операторе> () <процедуры> (), должно быть специфицировано в <объявлении параметра> () этой процедуры.
Если <имя> () в <операторе SQL> () совпадает с <именем параметра> () в <объявлении параметра> () <процедуры> (), содержащей этот <оператор SQL> (), то <спецификация столбца> (), которая содержит это <имя> (), должна содержать <квалификатор> ().
Законный вызов <процедуры> () должен поставлять n параметров, где n - число <объявлений> () в данной <процедуре> ().
Процедура должна содержать ровно один <параметр SQLCODE> (). На параметр, соответствующий параметру SQLCODE, ссыля4аются я0как я4на параметр SQLCODE.
i) Типом параметра SQLCODE должен быть COMPUTATIONAL S9(PC), где PC - определяемая реализацией точность, большая или равная 4. ii) Любой <тип> () в <объявлении> () должен быть CHARACTER или NUMERIC. iii) Если i-ое <объявление> () специфицирует <тип данных> () CHARACTER(L) c некоторой <длиной> () L, то тип i-ого параметра должен быть буквенно-цифровым типом языка COBOL длины L. iv) Если i-ое <объявление> () специфицирует <тип данных> () NUMERIC(P,S) c некоторыми <точностью> () P и <масштабом> () S, то типом i-ого параметра должен быть тип языка COBOL usage DISPLAY SIGN LEADING SEPARATE со следующим PICTURE:
Если S=P, то PICTURE: "S", за которым следует "V", и затем P экземпляров "9".
Если P > S > 0, то PICTURE: "S", за которым следуют P-S экземпляров "9", затем "V" и затем S экземпляров "9".
Если S=O, то PICTURE: "S", за которым следуют P экземпляров "9" и затем необязательное "V".
b) Если <раздел> () специфицирует FORTRAN, то:
i) Тип параметра SQLCODE должен быть типом INTEGER языка FORTRAN. ii) Любой <тип> () в <объявлении> должен быть CHARACTER, INTEGER, REAL или DOUBLE PRECISION. iii) Если i-ое <объявление> () специфицирует <тип данных> () CHARACTER(L) с некоторой <длиной> () L, то тип i-ого параметра должен быть типом CHARACTER языка FORTRAN с длиной L. vi) Если i-ое <объявление> () специфицирует <тип данных> () данных INTEGER, REAL или DOUBLE PRECISION, то тип i-ого параметра должен быть соответственно INTEGER, REAL или DOUBLE PRECISION языка FORTRAN.
c) Если <раздел> () специфицирует PASCAL, то:
i) Тип параметра SQLCODE должен быть типом INTEGER языка Pascal. ii) Любой <тип> () в <объявлении> () должен быть CHARACTER, INTEGER, или REAL. iii) Если i-ое <объявление> () специфицирует <тип данных> () CHARACTER(L) с некоторой <длиной> () L, то тип i-ого параметра должен быть типом строки языка Pascal длины L. iv) Если i-ое <объявление> () специфицирует <тип данных> () INTEGER или REAL, то тип i-ого параметра должен быть соответственно типом INTEGER, или REAL языка Pascal.
d) Если <раздел> () специфицирует PL1, то:
i) Тип параметра SQLCODE должен быть FIXED BINARY(PP), где РР определяемая реализацией точность, большая или равная 15. ii) Любой <тип> () в <объявлении> () должен быть CHARACTER, DECIMAL, или FLOAT. iii) Если i-ое <объявление> () специфицирует тип данных CHARACTER(L) с некоторой <длиной> () L, то тип i-ого параметра должен быть типом CHARACTER языка PL/1 с длиной L. vi) Если i-ое <объявление> () специфицирует тип данных DECIMAL(P,S) с некоторыми <точностью> () P и <масштабом> () S, то тип i-ого параметра должен быть типом FIXED REAL DECIMAL(P,S) языка PL/1. v) Если i-ое <объявление> () специфицирует тип данных FLOAT(P) с некоторой <точностью> () P, то тип i-ого параметра должнен быть типом FLOAT REAL BINARY (P) языка PL/1.
Общие правила
<Процедура> () определяет процедуру, которая может вызываться определяемым реализацией агентом.
Когда процедура вызывается агентом языка программирования: а) Если для этого агента нет активной транзакции, то транзакция фактически инициируется и связывается с этим вызовом и с последующими вызовами этим агентом любой <процедуры> () в содержащем <модуле> (), до тех пор, пока данный агент не закончит эту транзакцию. b) Выполняется <оператор> () S данной <процедуры> ().
а) Если S выполнен успешно, то
i) Если S - <оператор> () , для которого следующая строка не существует, то в параметр SQLCODE устанавливается значение 100. ii) Если S - <оператор> (), для которого не нашлось ни одной возможной строки, то в параметр SQLCODE устанавливается значение 100. iii) Если S - <оператор> (
b) Если S выполнен неуспешно, то
i) Все изменения, произведенные над базой данных при выполнении S, аннулируются. ii) В параметр SQLCODE устанавливается отрицательное число со значением, определяемым реализацией
Язык манипулирования данными (data manipulation language)
8.1 <Оператор> ()
Функция
Закрыть курсор.
Формат
::=
CLOSE
Синтаксические правила
Объемлющий модуль должен содержать объявление курсора, в котором используется это же имя курсора.
Общие правила
Курсор должен быть в открытом состоянии.
Курсор переводится в закрытое состояние и разрушается копия <спецификации курсора> ().
8.2. <Оператор> ()
Функция
Заканчивает текущую транзакцию с фиксацией.
Формат
::=
COMMIT WORK
Синтаксическиеправила
Нет.
Общие правила
Текущая транзакция завершается.
Закрываются любые курсоры, открытые данной транзакцией.
Любые изменения базы данных, сделанные в текущей транзакции, фиксируются.
8.3. <Объявление> ()
Функция
Определяет курсор.
Формат
::=
DECLARE CURSOR
FOR
::=
[...]
::=
| UNION [ALL]
::=
| ()
::=
ORDER BY
[{,}...]
::=
{ | }
[ASC | DESC]
Синтаксические правила
<Имя курсора> () не должно быть идентичным любому другому <имени курсора> (), специфицируемого в каком-либо другом <объявлении курсора> () того же модуля.
Любое <имя> (), содержащееся в <спецификации> (), должно быть определено в <объявлении> () <процедуры> () объемлющего <модуля> (), который содержит <оператор> (), специфицирующий это <имя курсора> (). Замечание: Cм. Синтаксическое правило 7.1, "<модуль> ()".
Пусть Т обозначает таблицу, специфицированную в <спецификации> ().
a) Если указано ORDER BY, то Т является только читаемой таблицей со специфицированным порядком сортировки. b) Если не указаны ни ORDER BY ни UNION и <спецификация> () является из меняемой (updatable), то Т - изменяемая таблица. c) Иначе Т - только читаемая таблица.
a) Если не указано UNION, то описанием Т является описание <спецификации запроса> (). b) Если указано UNION, то пусть для каждого специфицированного UNION Т1 и Т2 обозначают таблицы, которые специфицированы в <выражении> () и <терме> (). <Список выборки> (
Если указано ORDER BY, то каждая <спецификация сортировки> () в <разделе order by> () должна идентифицировать столбец таблицы Т. a) Если <спецификация> () содержит <спецификацию столбцов> (), то <спецификация> () идентифицирует столбец Т с именем, указанным в этой <спецификации столбца> (). b) Если <спецификация> () содержит <целое без знака> (), то это целое должно быть больше нуля и не более степени таблицы T. <Спецификация сортировки> () указывает столбец Т с порядковой (ordinal) позицией, специфицируемой этим <целым> ().
Общие правила
a) Если Т изменяемая (updatable) таблица, то курсор ассоциируется с именованной таблицей, идентифицируемой <именем таблицы> (
) из <раздела from> (). Пусть В обозначает эту именованную таблицу. Для каждой строки в Т существует соответствующая строка в В, из которой получена строка таблицы Т. Когда курсор установлен на строку таблицы Т, курсор также установлен на соответствующую строку таблицы В. b) В противном случае курсор не ассоциируется с именованной таблицей.
a) Если не указано UNION, то Т - это результат указанной <спецификации> (. b) Если UNION указано, то пусть для каждого указанного UNION Т1 и Т2 обозначают результаты <выражения> () и <терма> (). Результат UNION фактически порождается следующим образом: i) Инициализировать результат как пустую таблицу.
ii) Занести в результат каждую строку Т1 и каждую строку Т2 iii) Если не указано ALL , то удалить все излишние дубликаты строк из результата.
a) Если не указано ORDER BY, то:
i) Порядок строк в Т определяется реализацией. ii) Порядок строк может может быть разным в разных транзакциях. iii) Порядок строк Т, устанавливаемый при открытии курсора, будет таким же при следующем открытии курсора в этой же транзакции при условии, что:
Отсутствуют сторонние изменения каких-либо таблиц, указанным в спецификации курсора.
Упорядоченный набор значений параметров, передаваемых в <процедуру> (), содержащую <оператор> (), является одинаковым в обоих случаях. Если эти условия не удовлетворяются, то упорядочение строк в Т может различаться при последовательных открытиях курсора в одной транзакции.
b) Если ORDER BY указано, то Т обладает порядком сортировки:
i) Порядок сортировки является последовательностью групп сортировки. Группа сортировки - это последовательность строк, в которых все значения столбцов сортировки идентичны. Более того, группа сортировки может быть последовательностью групп сортировки. ii) Мощность последовательности и порядковая позиция каждой группы сортировки определяется значениями наиболее значащих столбцов сортировки. Мощность последовательности является минимальным числом групп сортировки таких, что для каждой группы сортировки с числом строк больше единицы все значения столбца сортировки идентичны. iii) Если порядок сортировки основывается на дополнительных столбцах сортировки, то каждая группа сортировки с числом строк больше единицы является последовательностью групп сортировки. Мощность каждой последовательности и порядковая позиция каждой группы сортировки внутри каждой последовательности определяется значениями следующего наиболее значащего столбца сортировки. Мощность каждой последовательности является минимальным числом групп сортировки таких, что для каждой группы с числом строк больше единицы все значения этого столбца сортировки идентичны. iv) Предыдущий параграф применяется по очереди к каждому дополнительному столбцу сортировки. Если группа сортировки состоит из нескольких строк и не является последовательностью групп сортировки, то порядок строк в группе сортировки не определен. v) Пусть С обозначает столбец сортировки и S - последовательность, которая определяется значениями С. vi) Направление сортировки связывается с каждым столбцом сортировки. Если направление для С задано по возрастанию, то первая группа сортировки S содержит наименьшее значение С и каждая последующая группа сортировки содержит значение С большее, чем значение С в предшествующей группе сортировки. Если направление для С задано по убыванию, то первая группа сортировки S содержит наибольшее значение С и каждая последующая группа сортировки содержит значения С меньшее, чем значение С в предшествующей группе сортировки. vii) Упорядоченность определяется правилами сравнения, указанными в 5.11, "<Предикат> (). Порядок неопределенных значений по отношению к не неопределенным значениям определяется реализацией, но должен быть либо строго больше либо строго меньше всех не неопределенных значений. viii) <Спецификация> () специфицирует столбец сортировки и направление. Столбец сортировки - это столбец, указываемый <целым> () или <спецификацией> (). <Целое> () i ссылается на i-ый столбец Т. <Спецификация> () указывает именованный столбец. ix) Если в <спецификации> () указано DESC, то направление сортировки, специфицируемое этой <спецификацией> (), является направлением по убыванию. Если указано АSC или не указано ни ASC, ни DESC, то направление сортировки для этого столбца сортировки является направлением по возрастанию. x) Последовательность <спецификаций сортировки> () определяет относительную значимость сортируемых столбцов. Столбец сортировки, указанный в первой <спецификации> (), наиболее значащий и каждый последующий столбец сортировки является менее значащим, чем предыдущий столбец сортировки.
8.4. <Оператор> ()
Функция
Удаляет строку таблицы.
Формат
::=
DELETE FROM
WHERE CURRENT OF
Синтаксические правила
Применимые <привилегии> () для <имени таблицы> (
) должны включать DELETE. Замечание: "Применимые <привилегии> ()" для <имени> (
) определяются в 6.10, "<Определение> ().
Содержащий <модуль> () должен содержать <объявление> () CR с тем же <именем> (), что и <имя> () в <операторе> ().
Таблица, на которую указывает CR, не должна быть только читаемой.
Пусть Т обозначает таблицу, идентифицируемую <именем> (
). Т должна быть таблицей, идентифицируемой в первом <разделе> () в <спецификации> () CR.
Общие правила
Курсор CR должен быть установлен на строку.
Строка, из которой получена текущая строка CR, удаляется.
8.5. <Оператор> ()
Функция
Удаляет строки таблицы.
Формат
::=
DELETE FROM
WHERE []
Синтаксические правила
Применимые <привилегии> () для <имени таблицы> (
) должны включать DELETE. Замечание: Применимые <привилегии> () для <имени> (
) определяются в 6.10, "<определение> ()".
Пусть Т обозначает таблицу, идентифицируемую <именем> (
). Т не должна быть только читаемой таблицей или таблицей, которая идентифицируется в <разделе> () любого <подзапроса> (), содержащегося в <условии> ().
Область действия <имени> (
) - целиком <оператор> (.
Общие правила
а) Если не указано <условие> (), то удаляются все строки таблицы Т. б) Если указано <условие> (), то условие применяется к каждой строке Т с <именем> (
), связанным с этой строкой, и все строки, для которых результат <условия поиска> () есть true, удаляются. Каждый <подзапрос> () в <условии> () реально выполняется для каждой строки T и результаты используются в применении <условия> () к данной строке Т. Если любой выполняемый <подзапрос> () содержит внешнюю ссылку на столбец Т, то эта ссылка указывает на значение этого столбца в данной строке Т. Замечание: "Внешняя ссылка" определяется в 5.7, "<спецификация> ()".
8.6. <Оператор> ()
Функция
Устанавливает курсор на следующую строку таблицы и выбирает значения из этой строки.
Формат
::=
FETCH INTO
::=
[{,}...]
Синтаксические правила
Содержащий <модуль> () должен содержать <объявление> () CR с тем же <именем> (), что и <имя> () в <операторе> (). Пусть Т обозначает таблицу, специфицированную через <спецификации курсора> () CR.
Число <спецификаций> () в <списке> () должно быть таким же как степень таблицы Т.
а) Если тип данных цели, указанной i-ой <спецификацией> () <списка> (), является типом символьных строк, то тип данных i-ого столбца таблицы Т должен быть типом символьных строк. b) Если тип данных цели, указанной i-ой <спецификацией> () <списка> (), является типом точных чисел, то тип данных i-ого столбца таблицы Т должен быть типом точных чисел. c) Если тип данных цели, указанной i-ой <спецификацией> () <списка> (), является типом приблизительных чисел, то тип данных i-ого столбца таблицы Т должен быть типом приблизительных чисел или типом точных чисел.
Общие правила
Курсор CR должен быть в открытом состоянии.
Если таблица, указываемая курсором CR, является пустой, или CR позиционирован на последнюю строку или за ней, то CR устанавливается в позицию после последней строки, параметру SQLCODE присваивается значение 100 и значения не присваиваются целям, идентифицированным в <списке целей чтения> ().
Если CR установлен в позицию перед строкой, то CR устанавливается на эту строку и значения этой строки присваиваются соответствующим целям.
Если CR установлен на r, где r - это строка, отличная от последней строки, то курсор устанавливается на строку, непосредственно следующую за строкой r, и значения из строки за r присваиваются соответствующим целям.
Присваивание значений целям в <списке> (), кроме параметра SQLCODE, осуществляются в порядке, определяемом реализацией. Параметр SQLCODE получает значение последним.
Если в процессе присваивания значения цели возникает ошибка, то в параметр SQLCODE устанавливается отрицательное значение, определяемое реализацией, и значения целей, отличных от параметра SQLCODE, зависят от реализации.
Пусть V обозначает цель, а v - соответствующее значение в текущей строке CR.
Если v - это неопределенное значение, то для V должен быть специфицирован индикатор, и этот индикатор устанавливается в -1. Если v - не неопределенное значение, и V обладает индикатором, то: a) Если тип данных V есть тип символьных строк длины L и длина M v больше L, то индикатор получает значение M. b) Иначе значение индикатора устанавливается в 0.
Цель, идентифицированная i-той <спецификацией цели> () из <списка целей чтения> (), соответствует i-ому значению из текущей строки CR.
a) Если тип данных V есть тип символьных строк, и длина v равна длине V, то значением V становится v. b) Если тип данных V есть тип символьных строк длины L, и длина v больше L, то значением V становятся первые L символов v. c) Если тип данных V есть тип символьных строк длины L, и длина M v меньше L, то значением первых M символов V становится v, и в последние L-M символов V устанавливаются символы пробела. d) Если тип данных V есть тип точных чисел, то должно существовать представление значения v в типе данных V такое, чтобы не потерялись какие-либо первые значащие цифры, и значением V становится это представление. e) Если тип данных V есть тип приблизительных чисел, то значением V становится приблизительное значение v.
<Оператор вставки> ()
Функция
Создает новые строки в таблице
Формат
::=
INSERT INTO
[()]
{VALUES ()|}
::=
[{,}...]
::=
[{,...]
::=
| NULL
Синтаксические правила
Применимые <привилегии> () к <имени таблицы> (
) должны включать INSERT. Замечание: Применимые <привилегии> () для <имени> (
) определяются в 6.10, "<определение> ()".
Пусть Т обозначает таблицу, идентифицируемую <именем> (
). Т не должна быть только читаемой таблицей или таблицей, которая идентифицируется в <разделе> () <спецификации запроса> () или какого-либо <подзапроса> (), содержащегося в <спецификации> ().
Каждое <имя> () в <списке столбцов вставки> () должно идентифицировать столбец Т, и один и тот же столбец не должен быть идентифицирован более одного раза. Отсутствие <списка> () является неявной спецификацией <списка столбцов вставки> (), который идентифицирует все столбцы Т в порядке возрастания их порядковых позиций внутри Т.
Столбец, идентифицированный в <списке столбцов вставки> (), является объектным столбцом.
а) Если указывается <список вставляемых значений> (), то число <вставляемых> () в этом <списке> () должно быть равно числу <имен> () в <списке вставляемых столбцов> (). Пусть i-ый элемент <оператора вставки> () указывает на i-ую <спецификацию> () в этом <списке вставляемых значений> (). b) Если указывается <спецификация запроса> (), то степень таблицы, специфицированной этой <спецификацией> (), должна быть равна числу <имен> () в <списке вставляемых столбцов> (). Пусть i-ый элемент <оператора вставки> () указывает на i-ый столбец таблицы, специфицированной <спецификацией> ().
Если i-ый элемент <оператора> () не является неопределенным <значением> (), то: а) Если тип данных столбца таблицы Т, указанный i-ым <именем> (), является типом символьных строк длины L, то тип данных i-ого элемента <оператора> () должен быть типом символьных строк с длиной меньшей или равной L. b) Если тип данных столбца таблицы Т, указанный i-ым <именем> (), является типом точных чисел, то тип данных i-ого элемента <оператора> () должен быть типом точных чисел. c) Если тип данных столбца таблицы Т, указанный i-ым <именем> (), является типом приблизительных чисел, то тип данных i-ого элемента <оператора> () должен быть типом приблизительных чисел или типом точных чисел.
Общие правила
Строка вставляется по следующим шагам: а) Фактически создается возможная строка, как это указано в Общих правилах 6.4, "<Раздел> ()". Если Т - это базовая таблица В, то возможная строка включает каждый столбец В. Если Т - это представляемая таблица, то возможная строка включает каждый столбец базовой таблицы В, из которой порождается Т. b) Для каждого объектного столбца в возможной строке его значение заменяется на вставляемое значение. c) Возможная строка вставляется в таблицу В.
Если Т - представляемая таблица, определенная через <определение> () с "WITH CHECK OPTION", то если <спецификация> (), содержащаяся в <определении представления> (), включает <раздел> (), не содержащийся в <подзапросе> (), то <условие поиска> () этого <раздела where> () должно быть истинным для возможной строки.
Если указывается <список вставляемых значений> (), то: а) Если i-ое <вставляемое> () из <списка вставляемых значений> () является <спецификацией> (), то значение столбца возможной строки, соответствущего i-ому объектному столбцу, является значением этой <спецификации> (). b) Если i-ое <вставляемое> () из <списка вставляемых значений> () является неопределенным значением, то значение столбца возможной строки, соответствующего i-ому объектному столбцу, является неопределенным значением.
Если указывается <спецификация> (), то пусть R обозначает результат этой <спецификации> (). Если R пуст, то параметру SQLCODE присваивается значение 100, и никакая строка не вставляется. Число созданных возможных строк равно мощности R. Вставляемые значения одной возможной строки являются значениями одной строки R, и значения в одной строке R являются вставляемыми значениями одной возможной строки.
Пусть V обозначает строку R или последовательность значений специфицированных <списком вставляемых значений> (insert value list>). Тогда i-ое значение V является вставляемым значением объектного столбца, идентифицируемого i-ым <именем> () в <списке вставляемых столбцов> ().
Пусть С обозначает объектный столбец. Пусть v обозначает не неопределенное вставляемое значение С.
а) Если тип данных С есть тип символьных строк и длина v равна длине С, то значение С устанавливается в v. b) Если тип данных С есть тип символьных строк и длина M v меньше L, то первые M символов C устанавливаются в v, и в последние L-M символы C заносится символ пробела. c) Если тип данных С есть тип точных чисел, то должно существовать представление значения v в типе данных С такое, чтобы не потерялись никакие первые значащие цифры, и это представление становится значением С. d) Если тип данных С есть тип приблизительных чисел, то значением С становится приблизительное значение v.
8.8. <Оператор> ()
Функция
Открывает курсор
Формат
::=
OPEN
Синтаксические правила
Содержащий <модуль> () должен содержать <объявление> () CR с тем же <именем> (), что и <имя> () в <операторе> ().
Общие правила
Курсор CR должен быть в закрытом состоянии.
Пусть S обозначает <спецификацию> ( курсора CR.
Курсор CR переводится в открытое состояние следующими шагами: а) Фактически создается копия S, в которой каждая <спецификация> () заменяется на значение идентифицируемой цели. b) Если S специфицирует только читаемую таблицу, то эта таблица фактически создается в соответствии со спецификацией - копией S. c) Курсор CR переводится в открытое состояние и его позиция устанавливается перед первой строкой таблицы.
8.9. <Оператор> ()
Функция
Завершает текущую транзакцию с откатом.
Формат
::=
ROLLBACK WORK
Синтаксические правила
Нет.
Общие правила
Любые изменения базы данных, совершенные в текущей транзакции, аннулируются.
Любой курсор, открывавшийся в текущей транзакции, закрывается.
Текущая транзакция завершается.
8.10. <Оператор> (
Функция
Выбирает значения из специфицированной строки таблицы.
Формат
SELECT [ALL | DISTINCT]
INTO
[{,}...]
Синтаксические правила
Применимые <привилегии> () для каждого <имени> (
) должны включать SELECT. Замечание: Применимые <привилегии> () для <имени> (
) определяются в 6.10, "<определение> ()".
<Выражение, <вырабатывающее> (
) не должно включать <раздел group by> () или <раздел having> и не должно идентифицировать сгруппированное представление.
Число элементов в <списке> (
а) Если тип данных цели, указанной i-ой <спецификацией> () в <списке> (), является типом символьных строк, то тип данных i-ого <выражения, вырабатывающего значение> () в <списке> () должен быть типом символьных строк. b) Если тип данных цели, указанной i-ой <спецификацией> () в <списке> (), является типом целых чисел, то тип данных i-ого <выражения, вырабатывающего значение> () в <списке> () должен быть типом точных чисел. c) Если тип данных цели, указанной i-ой <спецификацией> () в <списке> (), является типом приблизительных чисел, то тип данных i-ого <выражения, вырабатывающего значение> () <списке выборки> () должен быть типом приблизительных чисел.
Пусть S обозначает <спецификацию> () с теми же <списком выборки> () и <выражением, вырабатывающим таблицу> (