После открытия указатель текущей строки установлен перед первой строкой курсора. Стандартно
оператор FETCH перемещает указатель текущей строки на следующую строку и присваивает
базовым переменным значение столбцов, соответствующее текущей строке.
Простой оператор
FETCH имеет следующий синтаксис:
FETCH <имя_курсора>
INTO <список переменных базового языка >
Оператор
извлечения очередной строки из курсора будет выглядеть следующим образом:
FETCH Debtor_reader_cursor into @FIRSTJAME,
@LAST_NAME.
@ADRES. @HOME_PHON. @WORK PHON, @TITLE
Расширенный
оператор FETCH имеет следующий синтаксис:
FETCH
[NEXT | PRIOR
| FIRST | LAST
| ABSOLUTE (n
| <имя_переменной>)
|RELATIVE{n|<имя
_nepeмeнной>}] FROM
<имя_курсора>
INTO <список базовых переменных>
Здесь параметр
NEXT задает выбор следующей строки после текущей из базового набора строк, связанного
с курсором. Параметр PRIOR задает перемещение на предыдущую строку по отношению
к текущей. Параметр FIRST задает перемещение на первую строку набора, а параметр
LAST задает перемещение на последнюю строку набора.
Кроме того,
в расширенном операторе перемещения допустимо переместиться сразу на заданную
строку, при этом допустима как абсолютная адресация, заданием параметра ABSOLUTE,
так и относительная адресация, заданием параметра RELATIVE. При относительной
адресации положительное число сдвигает указатель вниз от текущей записи, отрицательное
число сдвигает вверх от текущей записи.
Однако для
применения расширенного оператора FETCH в соответствии со стандартом SQL2 описание
курсора обязательно должно содержать ключевое слово SCROLL. Иногда такие курсоры
называют в литературе прокручиваемыми курсорами. В стандарт эти курсоры вошли
сравнительно недавно, поэтому в коммерческих СУБД очень часто операторы по работе
с подобными курсорами серьезно отличаются. Правда, реалии сегодняшнего дня заставляют
поставщиков коммерческих СУБД более строго соблюдать последний стандарт SQL.
В технической документации можно встретить две версии синтаксиса оператора FETCH:
одну, которая соответствует стандарту, и другую, которая расширяет стандарт
дополнительными возможностями, предоставляемыми только данной СУБД для работы
с курсором.
Если вы предполагаете,
что ваша БД может быть перенесена на другую платформу, а это надо всегда предусматривать,
то лучше пользоваться стандартными возможностями. В этом случае ваше приложение
будет более платформенно-независимым и легче будет его перенести на другую СУБД.