Язык манипулирования данными DML (data manipulation language)

8.1 <Оператор закрытия> (<close statement>)

Функция

Закрыть курсор.

Формат

     <close statement>::=
         CLOSE <cursor name>

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

  1. Объемлющий модуль должен содержать объявление курсора, в котором используется это же имя курсора.

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

  1. Курсор должен быть в открытом состоянии.
  2. Курсор переводится в закрытое состояние и разрушается копия <спецификации курсора> (<cursor soecificaton>).

8.2. <Оператор фиксации> (<commit statement>)

Функция

Заканчивает текущую транзакцию с фиксацией.

Формат

     <commit statement>::=
              COMMIT WORK

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

Нет.

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

  1. Текущая транзакция завершается.
  2. Закрываются любые курсоры, открытые данной транзакцией.
  3. Любые изменения базы данных, сделанные в текущей транзакции, фиксируются.

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> ::=
              { <unsigned integer> | <column specification> }
               [ASC | DESC]

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

  1. <Имя курсора> (<cursor name>) не должно быть идентичным любому другому <имени курсора> (<cursor name>), специфицируемого в каком-либо другом <объявлении курсора> (<declare cursor>) того же модуля.
  2. Любое <имя параметра> (<parameter name>), содержащееся в <спецификации курсора> (<cursor specification>), должно быть определено в <объявлении параметра> (<paremeter declaration>) <процедуры> (<procedure>) объемлющего <модуля> (<module>), который содержит <оператор открытия> (<open statement>), специфицирующий это <имя курсора> (<cursor name>).
    Замечание: Cм. Синтаксическое правило 7.1, "<модуль> (<module>)".
  3. Пусть Т обозначает таблицу, специфицированную в <спецификации курсора> (<cursor specification>).

  4. a) Если указано ORDER BY, то Т является только читаемой таблицей со специфицированным порядком сортировки.
    b) Если не указаны ни ORDER BY ни UNION и <спецификация запроса> (<query specification>) является из меняемой (updatable), то Т - изменяемая таблица.
    c) Иначе Т - только читаемая таблица.

  5. 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.
  6. Если указано 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>).

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


  1. a) Если Т изменяемая (updatable) таблица, то курсор ассоциируется с именованной таблицей, идентифицируемой <именем таблицы> (<table name>) из <раздела from> (<from clause>). Пусть В обозначает эту именованную таблицу. Для каждой строки в Т существует соответствующая строка в В, из которой получена строка таблицы Т. Когда курсор установлен на строку таблицы Т, курсор также установлен на соответствующую строку таблицы В.
    b) В противном случае курсор не ассоциируется с именованной таблицей.

  2. a) Если не указано UNION, то Т - это результат указанной <спецификации запроса> (<query specification>.
    b) Если UNION указано, то пусть для каждого указанного UNION Т1 и Т2 обозначают результаты <выражения запроса> (<query expression>) и <терма запроса> (<query term>). Результат UNION фактически порождается следующим образом: i) Инициализировать результат как пустую таблицу.

  3. a) Если не указано ORDER BY, то:


    b) Если ORDER BY указано, то Т обладает порядком сортировки:

8.4. <Оператор удаления: позиционный> (<delete statement: positioned>)

Функция

Удаляет строку таблицы.

Формат

     <delete statement: positioned> ::=
                DELETE FROM <table name>
                WHERE CURRENT OF <cursor name>

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

  1. Применимые <привилегии> (<privileges>) для <имени таблицы> (<table name>) должны включать DELETE.
    Замечание: "Применимые <привилегии> (<privileges>)" для <имени таблицы> (<table name>) определяются в 6.10, "<Определение привилегий> (<privileges definition>).
  2. Содержащий <модуль> (<module>) должен содержать <объявление курсора> (<declare cursor>) CR с тем же <именем курсора> (<cursor name>), что и <имя курсора> (<cursor name>) в <операторе удаления: позиционном> (<delete statement: positioned>).
  3. Таблица, на которую указывает CR, не должна быть только читаемой.
  4. Пусть Т обозначает таблицу, идентифицируемую <именем таблицы> (<table name>). Т должна быть таблицей, идентифицируемой в первом <разделе from> (<from clause>) в <спецификации курсора> (<cursor specification>) CR.

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

  1. Курсор CR должен быть установлен на строку.
  2. Строка, из которой получена текущая строка CR, удаляется.

8.5. <Оператор удаления: поисковый> (<delete statement: searched>)

Функция

Удаляет строки таблицы.

Формат

     <delete statement: searched> ::=
           DELETE FROM <table name>
           WHERE [<search condition>]

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

  1. Применимые <привилегии> (<privileges>) для <имени таблицы> (<table name>) должны включать DELETE.
    Замечание: Применимые <привилегии> (<privileges>) для <имени таблицы> (<table name>) определяются в 6.10, "<определение привилегий> (<privileges definition>)".
  2. Пусть Т обозначает таблицу, идентифицируемую <именем таблицы> (<table name>). Т не должна быть только читаемой таблицей или таблицей, которая идентифицируется в <разделе from> (<from clause>) любого <подзапроса> (<subquery>), содержащегося в <условии поиска> (<search condition>).
  3. Область действия <имени таблицы> (<table name>) - целиком <оператор удаления: поисковый> (<delete statement: searched>.

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


  1. а) Если не указано <условие поиска> (<search condition>), то удаляются все строки таблицы Т.
    б) Если указано <условие поиска> (<search condition>), то условие применяется к каждой строке Т с <именем таблицы> (<table name>), связанным с этой строкой, и все строки, для которых результат <условия поиска> (<search condition>) есть true, удаляются. Каждый <подзапрос> (<subquery>) в <условии поиска> (<search condition>) реально выполняется для каждой строки T и результаты используются в применении <условия поиска> (<search condition>) к данной строке Т. Если любой выполняемый <подзапрос> (<subquery>) содержит внешнюю ссылку на столбец Т, то эта ссылка указывает на значение этого столбца в данной строке Т.
    Замечание: "Внешняя ссылка" определяется в 5.7, "<спецификация столбца> (<column specification>)".

8.6. <Оператор чтения> (<fetch statement>)

Функция

Устанавливает курсор на следующую строку таблицы и выбирает значения из этой строки.

Формат

     <fetch statement> ::=
          FETCH <cursor name> INTO <fetch target list>
     <fetch target list> ::=
          <target specification>[{,<target specification>}...]

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

  1. Содержащий <модуль> (<module>) должен содержать <объявление курсора> (<declare cursor>) CR с тем же <именем курсора> (<cursor name>), что и <имя курсора> (<cursor name>) в <операторе чтения> (<fetch statement>). Пусть Т обозначает таблицу, специфицированную через <спецификации курсора> (<cursor specification>) CR.
  2. Число <спецификаций цели> (<target specification>) в <списке целей чтения> (<fetch target list>) должно быть таким же как степень таблицы Т.

  3. а) Если тип данных цели, указанной i-ой <спецификацией цели> (<target specification>) <списка целей чтения> (<fetch target specification>), является типом символьных строк, то тип данных i-ого столбца таблицы Т должен быть типом символьных строк.
    b) Если тип данных цели, указанной i-ой <спецификацией цели> (<target specification>) <списка целей чтения> (<fetch target specification>), является типом точных чисел, то тип данных i-ого столбца таблицы Т должен быть типом точных чисел.
    c) Если тип данных цели, указанной i-ой <спецификацией цели> (<target specification>) <списка целей чтения> (<fetch target specification>), является типом приблизительных чисел, то тип данных i-ого столбца таблицы Т должен быть типом приблизительных чисел или типом точных чисел.

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

  1. Курсор CR должен быть в открытом состоянии.
  2. Если таблица, указываемая курсором CR, является пустой, или CR позиционирован на последнюю строку или за ней, то CR устанавливается в позицию после последней строки, параметру SQLCODE присваивается значение 100 и значения не присваиваются целям, идентифицированным в <списке целей чтения> (<fetch target list>).
  3. Если CR установлен в позицию перед строкой, то CR устанавливается на эту строку и значения этой строки присваиваются соответствующим целям.
  4. Если CR установлен на r, где r - это строка, отличная от последней строки, то курсор устанавливается на строку, непосредственно следующую за строкой r, и значения из строки за r присваиваются соответствующим целям.
  5. Присваивание значений целям в <списке целей чтения> (<fetch target list>), кроме параметра SQLCODE, осуществляются в порядке, определяемом реализацией. Параметр SQLCODE получает значение последним.
  6. Если в процессе присваивания значения цели возникает ошибка, то в параметр SQLCODE устанавливается отрицательное значение, определяемое реализацией, и значения целей, отличных от параметра SQLCODE, зависят от реализации.
  7. Пусть V обозначает цель, а v - соответствующее значение в текущей строке CR.
  8. Если v - это неопределенное значение, то для V должен быть специфицирован индикатор, и этот индикатор устанавливается в -1. Если v - не неопределенное значение, и V обладает индикатором, то:
    a) Если тип данных V есть тип символьных строк длины L и длина M v больше L, то индикатор получает значение M.
    b) Иначе значение индикатора устанавливается в 0.
  9. Цель, идентифицированная i-той <спецификацией цели> (<target specification>) из <списка целей чтения> (<fetch target list>), соответствует i-ому значению из текущей строки CR.

  10. 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.

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


Знаете ли Вы, как разрешается парадокс Ольберса?
(Фотометрический парадокс, парадокс Ольберса - это один из парадоксов космологии, заключающийся в том, что во Вселенной, равномерно заполненной звёздами, яркость неба (в том числе ночного) должна быть примерно равна яркости солнечного диска. Это должно иметь место потому, что по любому направлению неба луч зрения рано или поздно упрется в поверхность звезды.
Иными словами парадос Ольберса заключается в том, что если Вселенная бесконечна, то черного неба мы не увидим, так как излучение дальних звезд будет суммироваться с излучением ближних, и небо должно иметь среднюю температуру фотосфер звезд. При поглощении света межзвездным веществом, оно будет разогреваться до температуры звездных фотосфер и излучать также ярко, как звезды. Однако в дело вступает явление "усталости света", открытое Эдвином Хабблом, который показал, что чем дальше от нас расположена галактика, тем больше становится красным свет ее излучения, то есть фотоны как бы "устают", отдают свою энергию межзвездной среде. На очень больших расстояниях галактики видны только в радиодиапазоне, так как их свет вовсе потерял энергию идя через бескрайние просторы Вселенной. Подробнее читайте в FAQ по эфирной физике.

{DATA}
НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution