Для каждого <определения курсора> (<cursor declare>) в
<модуле> (<module>) должна существовать ровно одна
<процедура> (<procedure>) в этом <модуле>
(<module>), которая содержит <оператор открытия> (<open
statement>) со спецификацией <имени курсора> (<cursor
name>), объявленного в <объявлении курсора> (<cursor
declare>).
<Модуль> (<module>) должен быть ассоциирован с
прикладной программой при ее выполнения. Прикладная программа должна быть
ассоциирована не более чем с одним <модулем> (<module>).
Общие правила
Если <раздел языка> (<language clause>) <модуля>
(<module>) специфицирует COBOL (соответственно FORTRAN, PASCAL, PLI)
и если агент, выполняющий вызов <процедуры> (<procedure>)
этого <модуля> (<module>), не является стандартной программой
на языке COBOL (соответственно FORTRAN, Pascal, PL/1), то результат
неопределен.
После выполнения агентом на языке программирования последнего
вызова <процедуры> (<procedure>) в <модуле>
(<module>) неявно выполняется <оператор фиксации> (<commit
statement>) или <оператор отката> (<rollback statement>).
Выбор одного из этих <операторов SQL> (<SQL statement>) определяется
реализацией. Если имеет место невосстанавлваемая ошибка, то СУБД должна
выполнить <оператор отката> (<rollback statement>).
7.2. <Раздел имени модуля> (<module name clause>)
Функция
Задает имя <модуля> (<module>).
Формат
<module name clause> ::= MODULE [<module name>]
Синтаксические правила
<Имя модуля> (<module name>) должно отличаться от
<имени модуля> (<module name>) любого другого <модуля>
(<module>) в том же окружении. Понятие окружения определяется в
реализации.
Общие правила
<Раздел имени модуля> (<module name clause>)
определяет необязательный <идентификатор> (<identifier>) как
<имя модуля> (<module name>), определяющее содержащий
<модуль> (<module>) в данном окружении.
7.3. <Процедура> (<procedure>)
<Имя процедуры> (<procedure name>) должно отличаться
от <имени процедуры> (<procedure name>) любой другой
<процедуры> (<procedure>) в содержащем модуле.
<Имя параметра> <parameter name> в каждом
<объявлении параметра> (<parameter declaration>) в
<процедуре> (<procedure>) должно отличаться от <имени
параметра> (<parameter name>) любого другого <объявления
параметра> (<parameter declaration>) в этой процедуры.
Любое <имя параметра> (<parameter name>), содержащееся
в <операторе SQL> (<SQL statement>) <процедуры>
(<procedure>), должно быть специфицировано в <объявлении
параметра> (<parameter declaration>) этой процедуры.
Если <имя столбца> (<column name>) в <операторе
SQL> (<SQL statement>) совпадает с <именем параметра>
(<parameter name>) в <объявлении параметра> (<parameter
declaration>) <процедуры> (<procedure>), содержащей этот
<оператор SQL> (<SQL statement>), то <спецификация
столбца> (<column specification>), которая содержит это <имя
столбца> (<column name>), должна содержать <квалификатор>
(<qualifier>).
Законный вызов <процедуры> (<procedure>) должен
поставлять n параметров, где n - число <объявлений параметров>
(<parameter declaration>) в данной <процедуре>
(<procedure>).
Процедура должна содержать ровно один <параметр SQLCODE>
(<SQLCODE parameter>). На параметр, соответствующий параметру
SQLCODE, ссыля4аются я0как я4на параметр SQLCODE.
<Разделом языка> (<language clause>) процедуры
явля<раздел языка> (<language clause>) содержащего
<модуля> (<module>).
a) Если <раздел языка> (<language clause>) специфицирует
COBOL, то:
i) Типом параметра SQLCODE должен быть COMPUTATIONAL S9(PC), где PC -
определяемая реализацией точность, большая или равная 4.
ii) Любой <тип данных> (<data type>) в <объявлении
параметров> (<parameter declaration>) должен быть CHARACTER или
NUMERIC.
iii) Если i-ое <объявление параметра> (<parameter
declaration>) специфицирует <тип данных> (<data type>)
CHARACTER(L) c некоторой <длиной> (<lenght>) L, то тип i-ого
параметра должен быть буквенно-цифровым типом языка COBOL длины L.
iv) Если i-ое <объявление параметра> (<parameter
declaration>) специфицирует <тип данных> (<data type>)
NUMERIC(P,S) c некоторыми <точностью> (<precision>) P и
<масштабом> (<scale>) 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) Если <раздел языка> (<language clause>) специфицирует FORTRAN, то:
i) Тип параметра SQLCODE должен быть типом INTEGER языка FORTRAN.
ii) Любой <тип данных> (<data type>) в <объявлении
параметра> должен быть CHARACTER, INTEGER, REAL или DOUBLE PRECISION.
iii) Если i-ое <объявление параметра> (<parameter
declaration>) специфицирует <тип данных> (<data type>)
CHARACTER(L) с некоторой <длиной> (<lenght>) L, то тип i-ого
параметра должен быть типом CHARACTER языка FORTRAN с длиной L.
vi) Если i-ое <объявление параметра> (<parameter
declaration>) специфицирует <тип данных> (<data type>)
данных INTEGER, REAL или DOUBLE PRECISION, то тип i-ого параметра должен
быть соответственно INTEGER, REAL или DOUBLE PRECISION языка FORTRAN.
c) Если <раздел языка> (<language clause>) специфицирует PASCAL, то:
i) Тип параметра SQLCODE должен быть типом INTEGER языка Pascal.
ii) Любой <тип данных> (<data type>) в <объявлении параметра>
(<parameter declaration>) должен быть CHARACTER, INTEGER, или REAL.
iii) Если i-ое <объявление параметра> (<parameter
declaration>) специфицирует <тип данных> (<data type>)
CHARACTER(L) с некоторой <длиной> (<lenght>) L, то тип i-ого
параметра должен быть типом строки языка Pascal длины L.
iv) Если i-ое <объявление параметра> (<parameter
declaration>) специфицирует <тип данных> (<data type>)
INTEGER или REAL, то тип i-ого параметра должен быть соответственно типом
INTEGER, или REAL языка Pascal.
d) Если <раздел языка> (<language clause>) специфицирует PL1, то:
i) Тип параметра SQLCODE должен быть FIXED BINARY(PP), где РР
определяемая реализацией точность, большая или равная 15.
ii) Любой <тип данных> (<data type>) в <объявлении
параметра> (<parameter declaration>) должен быть CHARACTER, DECIMAL, или FLOAT.
iii) Если i-ое <объявление параметра> (<parameter
declaration>) специфицирует тип данных CHARACTER(L) с некоторой
<длиной> (<lenght>) L, то тип i-ого параметра должен быть
типом CHARACTER языка PL/1 с длиной L.
vi) Если i-ое <объявление параметра> (<parameter
declaration>) специфицирует тип данных DECIMAL(P,S) с некоторыми
<точностью> (<precision>) P и <масштабом>
(<scale>) S, то тип i-ого параметра должен быть типом FIXED REAL
DECIMAL(P,S) языка PL/1.
v) Если i-ое <объявление параметра> (<parameter declaration>)
специфицирует тип данных FLOAT(P) с некоторой <точностью>
(<precision>) P, то тип i-ого параметра должнен быть типом FLOAT
REAL BINARY (P) языка PL/1.
Общие правила
<Процедура> (<procedure>) определяет процедуру, которая может вызываться определяемым реализацией агентом.
Когда процедура вызывается агентом языка программирования:
а) Если для этого агента нет активной транзакции, то транзакция фактически
инициируется и связывается с этим вызовом и с последующими вызовами этим
агентом любой <процедуры> (<procedure>) в содержащем
<модуле> (<module>), до тех пор, пока данный агент не закончит
эту транзакцию.
b) Выполняется <оператор SQL> (<SQL statement>) S данной
<процедуры> (<procedure>).
а) Если S выполнен успешно, то
i) Если S - <оператор чтения> (<fetch statement>) , для
которого следующая строка не существует, то в параметр SQLCODE
устанавливается значение 100.
ii) Если S - <оператор вставки> (<insert statement>), для
которого не нашлось ни одной возможной строки, то в параметр SQLCODE
устанавливается значение 100.
iii) Если S - <оператор выборки> (<select statement>), результатом которого явилась пустая таблица, то в параметр SQLCODE устанавливается
значение 100.
iv) Если S - <оператор модификации: поисковый> (<update
statement: searched>) или <оператор удаления: поисковый>)
(<delete statement: searched>) с поиском, для которых не нашлись
объектные строки для модификации или удаления, то в параметр SQLCODE
устанавливается значение 100.
v) Во всех остальных случаях в параметр SQLCODE устанавливается 0.
b) Если S выполнен неуспешно, то
i) Все изменения, произведенные над базой данных при выполнении S, аннулируются.
ii) В параметр SQLCODE устанавливается отрицательное число со значением, определяемым реализацией
Язык манипулирования данными (data
manipulation language)
8.1 <Оператор закрытия> (<close statement>)
Функция
Закрыть курсор.
Формат
<close statement>::= CLOSE <cursor name>
Синтаксические правила
Объемлющий модуль должен содержать объявление курсора, в котором
используется это же имя курсора.
Общие правила
Рекомендуем скачать другие рефераты по теме: реферат загрязнение, купить диплом высшее.