<Имя курсора> (<cursor name>) не
должно быть идентичным любому
другому <имени курсора>
(<cursor name>), специфицируемого
в каком-либо другом
<объявлении курсора> (<declare
cursor>) того же модуля.
Любое <имя параметра>
(<parameter name>), содержащееся в
<спецификации курсора>
(<cursor specification>), должно быть
определено в <объявлении
параметра> (<paremeter declaration>)
<процедуры> (<procedure>)
объемлющего <модуля>
(<module>), который содержит
<оператор открытия> (<open
statement>), специфицирующий это
<имя курсора> (<cursor name>). Замечание: Cм.
Синтаксическое правило 7.1,
"<модуль> (<module>)".
Пусть Т обозначает таблицу,
специфицированную в
<спецификации курсора>
(<cursor specification>).
a) Если указано ORDER BY, то Т
является только читаемой
таблицей со специфицированным
порядком сортировки.
b) Если не указаны ни ORDER BY ни UNION
и <спецификация запроса>
(<query specification>) является из
меняемой (updatable), то Т -
изменяемая таблица.
c) Иначе Т - только читаемая
таблица.
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.
Если указано 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>).
Общие правила
a) Если Т изменяемая (updatable)
таблица, то курсор
ассоциируется с именованной
таблицей, идентифицируемой
<именем таблицы> (<table name>)
из <раздела from> (<from clause>).
Пусть В обозначает эту
именованную таблицу. Для
каждой строки в Т существует
соответствующая строка в В, из
которой получена строка
таблицы Т. Когда курсор
установлен на строку таблицы Т,
курсор также установлен на
соответствующую строку
таблицы В.
b) В противном случае курсор не
ассоциируется с именованной
таблицей.
a) Если не указано UNION, то Т - это
результат указанной
<спецификации запроса>
(<query specification>.
b) Если UNION указано, то пусть для
каждого указанного UNION Т1 и Т2
обозначают результаты
<выражения запроса> (<query
expression>) и <терма запроса>
(<query term>). Результат UNION
фактически порождается
следующим образом: i)
Инициализировать результат
как пустую таблицу.
ii) Занести в результат
каждую строку Т1 и каждую
строку Т2
iii) Если не указано ALL , то
удалить все излишние
дубликаты строк из
результата.
a) Если не указано ORDER BY, то:
i) Порядок строк в Т
определяется реализацией.
ii) Порядок строк может
может быть разным в разных
транзакциях.
iii) Порядок строк Т,
устанавливаемый при
открытии курсора, будет
таким же при следующем
открытии курсора в этой же
транзакции при условии,
что:
Отсутствуют сторонние
изменения каких-либо
таблиц, указанным в
спецификации курсора.
Упорядоченный набор
значений параметров,
передаваемых в
<процедуру>
(<procedure>), содержащую
<оператор открытия>
(<open statement>),
является одинаковым в
обоих случаях.
Если эти условия не
удовлетворяются, то
упорядочение строк в Т
может различаться при
последовательных
открытиях курсора в
одной транзакции.
b) Если ORDER BY указано, то Т
обладает порядком сортировки:
i) Порядок сортировки
является
последовательностью групп
сортировки. Группа
сортировки - это
последовательность строк,
в которых все значения
столбцов сортировки
идентичны. Более того,
группа сортировки может
быть последовательностью
групп сортировки.
ii) Мощность
последовательности и
порядковая позиция каждой
группы сортировки
определяется значениями
наиболее значащих
столбцов сортировки.
Мощность
последовательности
является минимальным
числом групп сортировки
таких, что для каждой
группы сортировки с числом
строк больше единицы все
значения столбца
сортировки идентичны.
iii) Если порядок сортировки
основывается на
дополнительных столбцах
сортировки, то каждая
группа сортировки с числом
строк больше единицы
является
последовательностью групп
сортировки. Мощность
каждой последовательности
и порядковая позиция
каждой группы сортировки
внутри каждой
последовательности
определяется значениями
следующего наиболее
значащего столбца
сортировки. Мощность
каждой последовательности
является минимальным
числом групп сортировки
таких, что для каждой
группы с числом строк
больше единицы все
значения этого столбца
сортировки идентичны.
iv) Предыдущий параграф
применяется по очереди к
каждому дополнительному
столбцу сортировки. Если
группа сортировки состоит
из нескольких строк и не
является
последовательностью групп
сортировки, то порядок
строк в группе сортировки
не определен.
v) Пусть С обозначает
столбец сортировки и S -
последовательность,
которая определяется
значениями С.
vi) Направление сортировки
связывается с каждым
столбцом сортировки. Если
направление для С задано
по возрастанию, то первая
группа сортировки S
содержит наименьшее
значение С и каждая
последующая группа
сортировки содержит
значение С большее, чем
значение С в
предшествующей группе
сортировки. Если
направление для С задано
по убыванию, то первая
группа сортировки S
содержит наибольшее
значение С и каждая
последующая группа
сортировки содержит
значения С меньшее, чем
значение С в
предшествующей группе
сортировки.
vii) Упорядоченность
определяется правилами
сравнения, указанными в 5.11,
"<Предикат
сравнения"> (<comparison
predicate>). Порядок
неопределенных значений
по отношению к не
неопределенным значениям
определяется реализацией,
но должен быть либо строго
больше либо строго меньше
всех не неопределенных
значений.
viii) <Спецификация
сортировки> (<sort
specification>) специфицирует
столбец сортировки и
направление. Столбец
сортировки - это столбец,
указываемый <целым без
знака> (<unsigned integer>) или
<спецификацией столбца>
(<column specification>). <Целое
без знака> (<unsigned integer>)
i ссылается на i-ый столбец
Т. <Спецификация
столбца> (<column specification>)
указывает именованный
столбец.
ix) Если в <спецификации
сортировки> (<sort
specification>) указано DESC, то
направление сортировки,
специфицируемое этой
<спецификацией
сортировки> (<sort
specification>), является
направлением по убыванию.
Если указано АSC или не
указано ни ASC, ни DESC, то
направление сортировки
для этого столбца
сортировки является
направлением по
возрастанию.
x) Последовательность
<спецификаций
сортировки> (<sort
specification>) определяет
относительную значимость
сортируемых столбцов.
Столбец сортировки,
указанный в первой
<спецификации
сортировки> (<sort
specification>), наиболее
значащий и каждый
последующий столбец
сортировки является менее
значащим, чем предыдущий
столбец сортировки.
<delete statement: positioned> ::=
DELETE FROM <table name>
WHERE CURRENT OF <cursor name>
Синтаксические правила
Применимые <привилегии>
(<privileges>) для <имени
таблицы> (<table name>) должны
включать DELETE. Замечание: "Применимые
<привилегии> (<privileges>)"
для <имени таблицы> (<table
name>) определяются в 6.10,
"<Определение привилегий>
(<privileges definition>).
Содержащий <модуль>
(<module>) должен содержать
<объявление курсора> (<declare
cursor>) CR с тем же <именем
курсора> (<cursor name>), что и
<имя курсора> (<cursor name>) в
<операторе удаления:
позиционном> (<delete statement:
positioned>).
Таблица, на которую указывает
CR, не должна быть только
читаемой.
Пусть Т обозначает таблицу,
идентифицируемую <именем
таблицы> (<table name>). Т должна
быть таблицей,
идентифицируемой в первом
<разделе from> (<from clause>) в
<спецификации курсора>
(<cursor specification>) CR.
Общие правила
Курсор CR должен быть
установлен на строку.
Строка, из которой получена
текущая строка CR, удаляется.
<delete statement: searched> ::=
DELETE FROM <table name>
WHERE [<search condition>]
Синтаксические правила
Применимые <привилегии>
(<privileges>) для <имени
таблицы> (<table name>) должны
включать DELETE. Замечание: Применимые
<привилегии> (<privileges>) для
<имени таблицы> (<table name>)
определяются в 6.10,
"<определение привилегий>
(<privileges definition>)".
Пусть Т обозначает таблицу,
идентифицируемую <именем
таблицы> (<table name>). Т не
должна быть только читаемой
таблицей или таблицей, которая
идентифицируется в <разделе
from> (<from clause>) любого
<подзапроса> (<subquery>),
содержащегося в <условии
поиска> (<search condition>).
Область действия <имени
таблицы> (<table name>) - целиком
<оператор удаления:
поисковый> (<delete statement:
searched>.
Общие правила
а) Если не указано <условие
поиска> (<search condition>), то
удаляются все строки таблицы Т.
б) Если указано <условие
поиска> (<search condition>), то
условие применяется к каждой
строке Т с <именем таблицы>
(<table name>), связанным с этой
строкой, и все строки, для
которых результат <условия
поиска> (<search condition>) есть
true, удаляются. Каждый
<подзапрос> (<subquery>) в
<условии поиска> (<search
condition>) реально выполняется
для каждой строки T и
результаты используются в
применении <условия поиска>
(<search condition>) к данной строке
Т. Если любой выполняемый
<подзапрос> (<subquery>)
содержит внешнюю ссылку на
столбец Т, то эта ссылка
указывает на значение этого
столбца в данной строке Т. Замечание: "Внешняя
ссылка" определяется в 5.7,
"<спецификация столбца>
(<column specification>)".
8.6. <Оператор чтения> (<fetch
statement>)
Функция
Устанавливает курсор на
следующую строку таблицы и
выбирает значения из этой строки.
Содержащий <модуль>
(<module>) должен содержать
<объявление курсора> (<declare
cursor>) CR с тем же <именем
курсора> (<cursor name>), что и
<имя курсора> (<cursor name>) в
<операторе чтения> (<fetch
statement>). Пусть Т обозначает
таблицу, специфицированную
через <спецификации
курсора> (<cursor specification>) CR.
Число <спецификаций цели>
(<target specification>) в <списке
целей чтения> (<fetch target list>)
должно быть таким же как
степень таблицы Т.
а) Если тип данных цели,
указанной i-ой <спецификацией
цели> (<target specification>)
<списка целей чтения> (<fetch
target specification>), является типом
символьных строк, то тип данных
i-ого столбца таблицы Т должен
быть типом символьных строк.
b) Если тип данных цели,
указанной i-ой <спецификацией
цели> (<target specification>)
<списка целей чтения> (<fetch
target specification>), является типом
точных чисел, то тип данных
i-ого столбца таблицы Т должен
быть типом точных чисел.
c) Если тип данных цели,
указанной i-ой <спецификацией
цели> (<target specification>)
<списка целей чтения> (<fetch
target specification>), является типом
приблизительных чисел, то тип
данных i-ого столбца таблицы Т
должен быть типом
приблизительных чисел или
типом точных чисел.
Общие правила
Курсор CR должен быть в открытом
состоянии.
Если таблица, указываемая
курсором CR, является пустой,
или CR позиционирован на
последнюю строку или за ней, то
CR устанавливается в позицию
после последней строки,
параметру SQLCODE присваивается
значение 100 и значения не
присваиваются целям,
идентифицированным в <списке
целей чтения> (<fetch target list>).
Если CR установлен в позицию
перед строкой, то CR
устанавливается на эту строку
и значения этой строки
присваиваются соответствующим
целям.
Если CR установлен на r, где r -
это строка, отличная от
последней строки, то курсор
устанавливается на строку,
непосредственно следующую за
строкой r, и значения из строки
за r присваиваются
соответствующим целям.
Присваивание значений целям в
<списке целей чтения> (<fetch
target list>), кроме параметра SQLCODE,
осуществляются в порядке,
определяемом реализацией.
Параметр SQLCODE получает
значение последним.
Если в процессе присваивания
значения цели возникает
ошибка, то в параметр SQLCODE
устанавливается отрицательное
значение, определяемое
реализацией, и значения целей,
отличных от параметра SQLCODE,
зависят от реализации.
Пусть V обозначает цель, а v -
соответствующее значение в
текущей строке CR.
Если v - это неопределенное
значение, то для V должен быть
специфицирован индикатор, и
этот индикатор
устанавливается в -1. Если v - не
неопределенное значение, и V
обладает индикатором, то:
a) Если тип данных V есть тип
символьных строк длины L и
длина M v больше L, то индикатор
получает значение M.
b) Иначе значение индикатора
устанавливается в 0.
Цель, идентифицированная i-той
<спецификацией цели> (<target
specification>) из <списка целей
чтения> (<fetch target list>),
соответствует 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.
Знаете ли Вы, что, как и всякая идолопоклонническая религия, релятивизм ложен в своей основе. Он противоречит фактам. Среди них такие:
1. Электромагнитная волна (в религиозной терминологии релятивизма - "свет") имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например, ~200 тыс км/с в стекле и ~3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью "Температура эфира и красные смещения"), разную скорость для разных частот (см. статью "О скорости ЭМ-волн")
2. В релятивизме "свет" есть мифическое явление само по себе, а не физическая волна, являющаяся волнением определенной физической среды. Релятивистский "свет" - это волнение ничего в ничем. У него нет среды-носителя колебаний.
3. В релятивизме возможны манипуляции со временем (замедление), поэтому там нарушаются основополагающие для любой науки принцип причинности и принцип строгой логичности. В релятивизме при скорости света время останавливается (поэтому в нем абсурдно говорить о частоте фотона). В релятивизме возможны такие насилия над разумом, как утверждение о взаимном превышении возраста близнецов, движущихся с субсветовой скоростью, и прочие издевательства над логикой, присущие любой религии.
4. В гравитационном релятивизме (ОТО) вопреки наблюдаемым фактам утверждается об угловом отклонении ЭМ-волн в пустом пространстве под действием гравитации. Однако астрономам известно, что свет от затменных двойных звезд не подвержен такому отклонению, а те "подтверждающие теорию Эйнштейна факты", которые якобы наблюдались А. Эддингтоном в 1919 году в отношении Солнца, являются фальсификацией. Подробнее читайте в FAQ по эфирной физике.