Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Базы данных -> SQL -> Язык баз данных SQL со средствами поддержания целостности


7. Язык модулей

7.1 <Модуль> (<module>)

Функция

Определяет модуль.

Формат

     <module> ::=
             <module name clause>
             <language clause>
             <module autorization clause>
             [<declare cursor>...]
             < procedure >  ...
     <language clause> ::=
          LANGUAGE { COBOL | FORTRAN | PASCAL | PLI }
     <module autorization clause> ::=
             AUTHORIZATION <module autorization identifier>
     <module autorization identifier> ::=
             <autorization identifier>

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

  1. Для каждого <определения курсора> (<cursor declare>) в <модуле> (<module>) должна существовать ровно одна <процедура> (<procedure>) в этом <модуле> (<module>), которая содержит <оператор открытия> (<open statement>) со спецификацией <имени курсора> (<cursor name>), объявленного в <объявлении курсора> (<cursor declare>).
  2. <Модуль> (<module>) должен быть ассоциирован с прикладной программой при ее выполнения. Прикладная программа должна быть ассоциирована не более чем с одним <модулем> (<module>).

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

  1. Если <раздел языка> (<language clause>) <модуля> (<module>) специфицирует COBOL (соответственно FORTRAN, PASCAL, PLI) и если агент, выполняющий вызов <процедуры> (<procedure>) этого <модуля> (<module>), не является стандартной программой на языке COBOL (соответственно FORTRAN, Pascal, PL/1), то результат неопределен.
  2. После выполнения агентом на языке программирования последнего вызова <процедуры> (<procedure>) в <модуле> (<module>) неявно выполняется <оператор фиксации> (<commit statement>) или <оператор отката> (<rollback statement>). Выбор одного из этих <операторов SQL> (<SQL statement>) определяется реализацией. Если имеет место невосстанавлваемая ошибка, то СУБД должна выполнить <оператор отката> (<rollback statement>).

7.2. <Раздел имени модуля> (<module name clause>)

Функция

Задает имя <модуля> (<module>).

Формат

     <module name clause> ::=
              MODULE [<module name>]

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

  1. <Имя модуля> (<module name>) должно отличаться от <имени модуля> (<module name>) любого другого <модуля> (<module>) в том же окружении. Понятие окружения определяется в реализации.

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

  1. <Раздел имени модуля> (<module name clause>) определяет необязательный <идентификатор> (<identifier>) как <имя модуля> (<module name>), определяющее содержащий <модуль> (<module>) в данном окружении.

7.3. <Процедура> (<procedure>)

Функция

Определяет процедуру и оператор языка SQL.

Формат

     <procedure> ::=
             PROCEDURE <procedure name>
                       <parameter declaration>...;
             <SQL statment>;
     <parameter declaration>::=
             <parameter name> <data type>
           | <SQLCODE parameter>
     <SQLCODE parameter> ::=
             SQLCODE
     <SQL statement> ::=
             <close statement>
           | <commit statement>
           | <delete statement positioned>
           | <delete statement searched>
           | <fetch statement>
           | <insert statement>
           | <open statement>
           | <rollback statement>
           | <select statement>
           | <update statement positioned>
           | <update statement searched>

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

  1. <Имя процедуры> (<procedure name>) должно отличаться от <имени процедуры> (<procedure name>) любой другой <процедуры> (<procedure>) в содержащем модуле.
  2. <Имя параметра> <parameter name> в каждом <объявлении параметра> (<parameter declaration>) в <процедуре> (<procedure>) должно отличаться от <имени параметра> (<parameter name>) любого другого <объявления параметра> (<parameter declaration>) в этой процедуры.
  3. Любое <имя параметра> (<parameter name>), содержащееся в <операторе SQL> (<SQL statement>) <процедуры> (<procedure>), должно быть специфицировано в <объявлении параметра> (<parameter declaration>) этой процедуры.
  4. Если <имя столбца> (<column name>) в <операторе SQL> (<SQL statement>) совпадает с <именем параметра> (<parameter name>) в <объявлении параметра> (<parameter declaration>) <процедуры> (<procedure>), содержащей этот <оператор SQL> (<SQL statement>), то <спецификация столбца> (<column specification>), которая содержит это <имя столбца> (<column name>), должна содержать <квалификатор> (<qualifier>).
  5. Законный вызов <процедуры> (<procedure>) должен поставлять n параметров, где n - число <объявлений параметров> (<parameter declaration>) в данной <процедуре> (<procedure>).
  6. Процедура должна содержать ровно один <параметр SQLCODE> (<SQLCODE parameter>). На параметр, соответствующий параметру SQLCODE, ссыля4аются я0как я4на параметр SQLCODE.
  7. <Разделом языка> (<language clause>) процедуры явля<раздел языка> (<language clause>) содержащего <модуля> (<module>).

  8. 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:
      1. Если S=P, то PICTURE: "S", за которым следует "V", и затем P экземпляров "9".
      2. Если P > S > 0, то PICTURE: "S", за которым следуют P-S экземпляров "9", затем "V" и затем S экземпляров "9".
      3. Если 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.

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

  1. <Процедура> (<procedure>) определяет процедуру, которая может вызываться определяемым реализацией агентом.
  2. Когда процедура вызывается агентом языка программирования:
    а) Если для этого агента нет активной транзакции, то транзакция фактически инициируется и связывается с этим вызовом и с последующими вызовами этим агентом любой <процедуры> (<procedure>) в содержащем <модуле> (<module>), до тех пор, пока данный агент не закончит эту транзакцию.
    b) Выполняется <оператор SQL> (<SQL statement>) S данной <процедуры> (<procedure>).

  3. а) Если 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 устанавливается отрицательное число со значением, определяемым реализацией.

Назад | Содержание | Вперед



 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.