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

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


Приложения

Приложение А. <Программа со встроенным SQL> (<embedded SQL host program>)
(Это дополнение не является неотъемлемой частью стандарта.)

Функция

Специфицирует прикладную программу со встроенным языком SQL.

Формат

     <embedded SQL host program> ::=
               <embedded SQL COBOL program>
             | <embedded SQL FORTRAN program>
             | <embedded SQL  Pascal program>
             | <embedded SQL  PL/1 program>
     <embedded SQL statement> ::=
              <SQL prefix>
               { <declare cursor>
               | <embedded exception declaration>
               | <SQL statement>}
              [<SQL terminator>]
     <SQL prefix> ::=
             EXEC SQL
     <SQL terminator> ::=
             END EXEC | ;
     <embedded SQL declare section> ::=
            <embedded SQL begin declare>
           [<host variable definition>...]
            <embedded SQL end declare>
     <embedded SQL begin declare> ::=
            <SQL prefix> BEGIN DECLARE SECTION
           [<SQL terminator>]
     <embedded SQL end declare> ::=
            <SQL prefix> END DECLARE SECTION
           [<SQL terminator>]
     <host variable definition> ::=
            < COBOL variable definition>
          | < FORTRAN variable definition>
          | <Pascal variable definition>
          | <PL/1 variable definition>
     <embedded variable name> ::=
           :<host identifier>
     <host identifier> ::=
            < COBOL host identifier>
          | < FORTRAN host identifier>
          | <Pascal host identifier>
          | <PL/1 host identifier>

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

  1. <Прикладная программа со встроенным SQL> (<embedded SQL host program>) является прикладной программой, состоящей из текста на языке программирования и текста на SQL. Текст на языке программирования должен удовлетворять требованиям конкретного стандартного языка программирования. Текст на SQL должен состоять из одного или более <встроенных операторов SQL> (<embedded SQL statement>) и, возможно, одной или более <секций объявления SQL> (<embedded SQL declare section>).
  2. <Встроенный оператор SQL> (<embedded SQL statement>), <объявление начала встроенного SQL> (<embedded SQL begin declare>) или <объявление конца встроенного SQL> (<embedded SQL end declare>), содержащиеся в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>), должны содержать <терминатор SQL> (<SQL terminator>) END-EXEC. <Встроенный оператор SQL> (<embedded SQL statement>), <объявление начала встроенного SQL> (<embedded SQL begin declare>) или <объявление конца встроенного SQL> (<embedded SQL end declare>), содержащиеся в <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>), не должны содержать <терминатор SQL> (<SQL terminator>). <Встроенный оператор SQL> (<embedded SQL statement>), <объявление начала встроенного SQL> (<embedded SQL begin declare>) или <объявление конца встроенного SQL> (<embedded SQL end declare>), содержащиеся в <программе на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>), должны содержать <терминатор SQL> (<SQL terminator>) - точку с запятой. В <программе на языке PASCAL со встроенным SQL> (<embedded SQL PASCAL program>) <объявление начала встроенного SQL> (<embedded SQL begin declare>) должно содержать <терминатор SQL> (<SQL terminator>) - точку с запятой; <объявление конца встроенного SQL> (<embedded SQL end declare>) или <встроенный оператор SQL> (<embedded SQL statement>), непосредственно следующие за <<объявлением начала встроенного SQL> (<embedded SQL begin declare>) или <встроенным оператором SQL> (<embedded SQL statement>), должны содержать <терминатор SQL> - точку с запятой; в остальных случаях <объявление конца встроенного SQL> (<embedded SQL end declare>) или <встроенный оператор SQL> (<embedded SQL statement>) не должны содержать <терминатор SQL>, а должны заканчиваться в соответствии с правилами для операторов языка Pascal.
  3. <Префикс SQL> (<SQL prefix>), <объявление начала встроенного SQL> (<embedded SQL begin declare>) или <объявление конца встроенного SQL> (<embedded SQL end declare>) должны специфицироваться в одной строке, которая не содержит комментариев. В остальных случаях действуют правила продолжения строк и лексем с одной строки на другую и правила размещения комментариев, определенные в языке программирования, на котором написана <программа со встроенным SQL> (<embedded SQL host program>).
  4. <Объявление курсора> (<declare cursor>), содержащееся в <программе со встроенным SQL> (<embedded SQL host program>, должно текстуально предшествовать в тексте этой <программы со встроенным SQL> (<embedded SQL host program> любому <оператору SQL> (<SQL statement>), который ссылается на <имя курсора> (<cursor name>) этого <объявления курсора> (<declare cursor>).
  5. Любой <идентификатор основного языка> (<host identifier>), который появляется во <встроенном операторе SQL> (<embedded SQL statement>) <программы со встроенным SQL> (<embedded SQL host program>, должен быть явно объявлен в точности одном <определении переменной основного языка> (<host variable definition>), содержащемся в <программе со встроенным SQL> (<embedded SQL host program>. Это <определение переменной основного языка> (<host variable definition>) должно появляться в тексте <программы со встроенным SQL> (<embedded SQL host program> до любого <встроенного оператора SQL> (<embedded SQL statement>), ссылающегося на этот <идентификатор основного языка> (<host identifier>). <Определение переменной основного языка> (<host variable definition>) должно быть таким, чтобы ссылки на основе <идентификатора основного языка> (<host identifier>) были законными в каждом <встроенном операторе SQL> (<embedded SQL statement>), ссылающем этот <идентификатор основного языка> (<host identifier>).
  6. <Определение переменной основного языка> (<host variable definition>) определяет тип данных основного языка этого <идентификатора основного языка> (<host identifier>). Для каждого такого типа данных основного языка программирования эквивалентный тип данных SQL специфицируется в Приложении С, "<Программа на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>)", Приложении D, "<Программа на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>)", Приложении E, "<Программа на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>)" и Приложении F, "<Программа на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>)".
  7. Для данной <программа со встроенным SQL> (<embedded SQL host program> H существует SQL <модуль> (<module>) M, который получается из Н по следующим правилам:
    а) М содержит <раздел имени модуля> (<module name clause>) c определяемым реализацией или опускаемым <именем модуля> (<module name>).
    b) М содержит <раздел языка> (<language clause>), которой специфицирует COBOL, FORTRAN, PASCAL или PL/1, и Н является соответственно <программой на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>), <программой на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>), <программой на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>) или <программой на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>).
    c) М содержит <раздел полномочий модуля> (<module authorization clause>), где <идентификатор полномочий модуля> (<module authorization identifier>) определяется реализацией.
    d) Для каждого <объявления курсора> (<declare cursor>) EC, содержащегося в H, М содержит одно <объявление курсора> (<declare cursor>) PC и одну процедуру (<procedure>) PS, которая содержит <оператор открытия> (<open cursor>), ссылающийся на PC. <Имя процедуры> (<procedure name>) PS определяется реализацией. PC является копией EC, в которой каждое отдельное <имя встроенной переменной> (<embedded variable name>) замещено на определяемое реализацией <имя параметра> (<parameter name>). PS содержит <объявление параметра> (<parameter declaration>) для каждого <имени параметра> (<parameter name>), содержащегося в PC, и <объявление параметра> (<parameter declaration>) SQLCODE. Порядок <объявлений параметров> (<parameter declaration>) в PS определяется реализацией. <Объявление параметра> (<parameter declaration>), который соответствует данному отдельному <имени встроенной переменной> (<embedded variable name>) V, появляющейся в EC, специфицирует отдельное <имя параметра> (<parameter name>), которым заменялось V, <тип данных> (<data type>) SQL которого эквивалентен типу данных V в основном языке.
    e) М содержит <процедуру> (<procedure>), соответствующую каждому <оператору SQL> (<SQL statement>), содержащемуся в H. <Процедура> (<procedure>) PS модуля М, соответствующая <оператору SQL> (<SQL statement>) ES из H, определяется следующим образом:
      i) Если ES не является <оператором открытия> (<open statement>), то:
      1. <Имя процедуры> (<procedure name>) PS определяется реализацией.
      2. <Оператор SQL> (<SQL statement>) процедуры PS является копией ES, в которой каждое отдельное <имя встроенной переменной> (<embedded variable name>) согласованным образом заменено на отдельное <имя параметра> (<parameter name>), определяемое реализацией.
      3. PS содержит <объявление параметра> (<parameter declaration>) для каждого отдельного определяемого реализацией <имени параметра> (<parameter name>), содержащегося в <операторе SQL> (<SQL statement>) PS, и <объявление параметра> (<parameter declaration>) SQLCODE. Порядок <объявлений параметров> (<parameter declaration>) определяется реализацией. <Объявление параметра> (<parameter declaration>), который соответствует данному отдельному <имени встроенной переменной> (<embedded variable name>) V, появляющейся в EC, специфицирует отдельное <имя параметра> (<parameter name>), на которое замещалось V, с <типом данных> (<data type>) SQL, эквивалентным типу данных V в основном языке.
      4. Может ли одна <процедура> (<procedure>) М соответствовать более чем одному <оператору SQL> (<SQL statement>) из H - определяется реализацией.

      ii) Если ES является <oператором открытия> (<open statement>), то:
      1. Пусть ES обозначает <объявление курсора> (<declare cursor>) в H, на который ссылается ES.
      2. PS - это <процедура> (<procedure>) в модуле М, содержащая <оператор открытия> (<open statement>), который ссылается на <объявление курсора> в М, соответствующему ES.
  8. Для заданной <программы со встроенным SQL> (<embedded SQL host program> H существует программа Р на основном языке, стандартным образом полученная из H по следующим правилам:
    а) Все <объявления начала встроенного SQL> (<embedded SQL begin declare>) и <объявления конца встроенного SQL> <embedded SQL end declare> удалены.
    b) Все <встроенные операторы SQL> (<embedded SQL statement>), содержащие <объявление курсора> (<declare cursor>) или <встроенное объявление исключительной ситуции> (<embedded exception declaration> , удалены.
    c) Каждый <встроенный оператор SQL> (<embedded SQL statement>), содержащий <оператор SQL> (<SQL statement>), заменен на операторы основного языка, которые выполняют следующие действия:

      i) Вызов средствами основного языка <процедуры> (<procedure>) <модуля> (<module>) М программы H, который соответствует <оператору SQL> (<SQL statement>). Если <оператор SQL> (<SQL statement>) не является <оператором открытия> (<open statement>), то аргументы вызова включают все различные <идентификаторы основного языка> (<host identifier>), содержащиеся в <операторе SQL> вместе с переменной SQL. Если <оператор SQL> (<SQL statement>) является <оператором открытия> (<open statement>), то аргументы вызова включают каждый различный <идентификатор основного языка> (<host identifier>), содержащийся в соответствующем <объявлении курсора> (<cursor declare>) в Н вместе с SQL переменной. Порядок аргументов в вызове соответствует порядку <объявления параметров> (<parameter declaration>) в соответствующей <процедуре> (<procedure>).
      Замечание: В <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>) "переменная SQLCODE" сокращается до "SQLCOD". См. Синтаксическое правило 6 Приложения D, "<Программа на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>)".
      ii) Действия по исключительным ситуациям - в соответствии со спецификациями в Приложении B, "<Встроенное объявление исключительной ситуации> (<embedded exception declaration>).
  9. Порождение программы Р и <модуля> (<module>) М из текста <программы со встроенным SQL> (<embedded SQL host program> Н фактически предшествует выполнению любых команд манипулирования текстом программы на основном языке, таких как включение или копирование текста.
  10. Данная <программа со встроенным SQL> (<embedded SQL host program> Н с извлекаемым модулем М и извлекаемой программой Р определена так, как сказано выше:
    а) Извлекаемый <модуль> (<module>) М программы Н должен быть стандартным <модулем> (<module>) SQL, как он специфицируется Форматами и Синтаксическими правилами данного стандарта.
    b) Если программа Н является <программой на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>), то извлекаемая программа Р должна соответствовать стандарту программы на языке COBOL. Если программа Н является <программой на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>), то извлекаемая программа Р должна соответствовать стандарту программы на языке FORTRAN. Если программа Н является <программой на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>), то извлекаемая программа Р должна соответствовать стандарту программой на языке Pascal. Если программа П является <программой на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>), то извлекаемая программа Р должна соответствовать стандарту программы на ПЛ/1.

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

  1. Интерпретация <программы со встроенным SQL> (<embedded SQL host program>) H по определению эквивалентна интерпретации извлекаемой программы P и извлекаемого <модуля> (<module>) М из программы Н.

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



 

 
Интересное в сети
 
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 обязательна. Карта сайта.