Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 9075-93 Информационная технология (ИТ). Язык баз данных SQL с расширением целостности

     4.12 Курсоры


Курсор задается <объявлением курсора>.

Для каждого <объявления курсора> в <модуле> курсор эффективно создается, когда транзакция (см. 4.16 "Транзакция"), обращающаяся к модулю, начинается, и разрушается, когда эта транзакция заканчивается.

Курсор находится либо в открытом, либо в закрытом состоянии. Начальным состоянием курсора является закрытое состояние. Курсор помещается в открытое состояние <оператором открытия> и возвращается в закрытое состояние <оператором закрытия>, <оператором блокировки> или <оператором возврата>.

Курсор в открытом состоянии обозначает таблицу, упорядочение строк в этой таблице и положение относительно этого упорядочения. Если <объявление курсора> не включает <спецификатор упорядочения> или если оно включает <спецификатор упорядочения>, который не полностью задает упорядочение строк, то строки в таблице имеют порядок, полностью или частично определяемый разработчиком.

В пределах одной транзакции, где упорядочение строк не определено или определено не полностью <спецификатором упорядочения>, то относительное положение двух строк будет в общем случае одинаковым в любой момент времени в период, когда курсор открыт. Упорядочение может изменяться от одного момента времени к другому, если значения базы данных или значения параметров, запрашиваемых в <спецификации курсора>, в <объявлении курсора>, различны.

В отдельных транзакциях, даже если значения баз данных и значения параметров, запрашиваемых в <спецификации курсора> в <объявлении курсора>, одинаковы, порядок строк, определенный одной и той же <спецификацией курсора> и <оператором открытия>, может быть различным.

Курсор располагается в открытом состоянии либо перед определенной строкой, на определенной строке, либо после последней строки. Если курсор находится на строке, то эта строка является текущей строкой для курсора. Курсор может находиться перед первой строкой или после последней строки, даже если таблица пуста.

<Оператор выборки> перемещает положение открытого курсора к следующей строке по порядку следования курсора и отыскивает значения столбцов этой строки. <Оператор корректировки: по положению> корректирует текущую строку курсора. <Оператор удаления: по положению> удаляет текущую строку курсора.

Если курсор находится перед строкой, и в это положение вставляется новая строка, то влияние, если оно есть, на положение курсора задается разработчиком.

Если курсор находится на строке или перед строкой, и эта строка удаляется, то курсор располагается перед строкой, находящейся непосредственно после положения удаляемой строки. Если такая строка не существует, то курсор располагается после последней строки.

Если происходит ошибка во время выполнения <оператора SQL>, который идентифицирует открытый курсор, то влияние, если оно есть, на положение или состояние этого курсора определяется разработчиком.

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

Каждая строка рабочей представленной таблицы появляется только тогда, когда курсор устанавливается на эту строку.

Рабочая базовая таблица возникает, когда курсор открывается, и исчезает, когда курсор закрывается.