Субд лекции

Темы:

Курсоры

Курсоры обычно используются в рамках SQL, встроенного в программы, написанные на языке процедурного типа. Использование курсоров вызвано необходимостью стыковать позаписные включающие языки и теоретико-множественный язык SQL.

Курсор определяется посредством оператора объявления курсора (DECLARE CURSOR). Этот оператор определяет имя курсора, а так же содержит в своем составе запрос, выходные данные которого сохраняются для последующей обработки включающей программой:

DECLARE <имя_курсора> [INSENSITIVE] [SCROLL] CURSOR

FOR<подзапрос> [<предложение для обновления>]

Курсор находится либо в открытом состоянии, либо в закрытом. Начальное состояние курсора - закрытое. Для открытия курсора используется оператор OPEN CURSOR <имя курсора>. Запрос, описанный при определении курсора, выполняется именно при открытии курсора. При первом открытии курсор устанавливается перед первой строкой. Позиция курсора в открытом состоянии может быть перед определенной строкой, на определенной строке или после последней строки. Если курсор установлен на строку, то эта строка является текущей строкой курсора.

Для построчного извлечения данных из курсора используется оператор FETCH. Этот оператор продвигает позицию открытого курсора на следующую строку в порядке этого курсора, извлекает значения полей этой строки в переменные и имеет следующий синтаксис:

FETCH [[orientation]FROM] имя курсора

INTO целевая спецификация.,..;

orientation::=

NEXT | PRIOR | FIRST | LAST | {ABSOLUTE | RELATIVE

спецификация значения}

Значения NEXT, PRIOR, FIRST, LAST понятны без дополнительного пояснения. Значение ABSOLUTE N вызывает перемещение на N-ю строку, а значение RELATIVE N - перемещение на N строк вперед, если N - положительное число, и на N строк назад, если N -отрицательное число.

предыдущаяследующая