направление. Необязательный параметр, определяющий направление выборки. Допустимыми значениями являются перечисленные ниже ключевые слова.
FORWARD. Признак выборки записей, следующих за текущей позицией курсора. Используется по умолчанию, если направление не указано.
BACKWARD. Признак выборки записей, предшествующих текущей позиции курсора.
RELATIVE. Необязательное ключевое слово, поддерживаемое для совместимости со стандартом SQL92. В PostgreSQL 7.1.x курсоры производят выборку только от текущей позиции курсора, поэтому наличие ключевого слова RELATIVE ни на что не влияет. Учтите, что при использовании ключевого слова RELATIVE с параметром количество_записей, равным 0, происходит ошибка (см. ниже пункт «Результаты»).
количество_записей. Количество записей в выборке. Значение параметра представляет собой число или одно из следующих ключевых слов:
ALL — выборка всех записей;
NEXT — запись, следующая за текущей позицией курсора;
PRIOR — запись, предшествующая текущей позиции курсора.
курсор. Имя открытого курсора, используемого для выборки записей.
Результаты
В случае успешного завершения команда FETCH возвращает результаты запроса, ассоциированного с указанным курсором. Если запрос завершается неудачей, выводится одно из представленных ниже сообщений.
NOTICE: PerformPortalFetch: portal "курсор" not found. Сообщение означает, что курсор с указанным именем не был объявлен. Не забывайте о том, что перед использованием курсор необходимо объявить в транзакционном блоке.
NOTICE: FETCH/ABSOLUTE not supported, using RELATIVE. Попытка выборки с абсолютным позиционированием (ключевое слово ABSOLUTE вместо RELATIVE). PostgreSQL не поддерживает абсолютное позиционирование курсора, то есть перемещение к заданной записи итогового набора (вместо перемещения относительно текущей позиции курсора).
ERROR: FETCH/RELATIVE at current position is not supported. Ошибка — попытка выборки нуля записей с ключевым словом RELATIVE. Это связано с тем, что в соответствии со стандартом SQL92 синтаксис FETCH RELATIVE О FROM Курсор должен обеспечивать повторную выборку записи в текущей позиции курсора. В PostgreSQL этот синтаксис не поддерживается. Без ключевого слова RELATIVE число 0 интерпретируется как запрос на выборку всех записей. Но с ключевым словом RELATIVE PostgreSQL предполагает, что вы пытаетесь использовать синтаксис SQL92, и вместо того, чтобы вернуть все записи, выводит сообщение об ошибке.
Описание
Команда FETCH возвращает заданное количество записей от текущей позиции курсора. Курсоры используются только в транзакцнонных блоках, поскольку возвращаемая ими информация теоретически зависит от действий других пользователей в системе. Количество записей может быть как положительным, так и отрицательным. При положительном значении отсчет ведется в направлении, заданном соответствующим параметром (если параметр не указан, по умолчанию используется параметр FORWARD).
При отрицательном количестве записей отсчет ведется в направлении, противоположном заданному. Например, конструкция FORWARD -5 эквивалентна конструкции BACKWARD 5. Если количество записей превышает количество записей в базе, команда FETCH выбирает все существующие записи в указанном направлении.
Примечание 1
Примечание 1
В PostgreSQL 7.1.x не поддерживается обновление данных с использованием курсоров.