FETCH
Выборка записей с использованием курсора.
Синтаксис:
FETCH направление [ количество_записей ] { IN | FROM } курсор направление:: – { FORWARD | BACKWARD | RELATIVE } количество_записей:: = { число \ ALL NEXT PRIOR }
Параметры:
- направление. Необязательный параметр, определяющий направление выборки. Допустимыми значениями являются перечисленные ниже ключевые слова.
- 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, и вместо того, чтобы вернуть все записи, выводит сообщение об ошибке.