![]() |
![]() |
![]() |
FETCH Выборка записей с использованием курсора. Синтаксис FETCH направление [ количество_записей ] { IN | FROM } курсор направление ::- { FORWARD | BACKWARD | RELATIVE } количество_записей ::={ число \ ALL NEXT PRIOR } Параметры
Результаты В случае успешного завершения команда FETCH возвращает результаты запроса, ассоциированного с указанным курсором. Если запрос завершается неудачей, выводится одно из представленных ниже сообщений.
Описание Команда FETCH возвращает заданное количество записей от текущей позиции курсора. Курсоры используются только в транзакцнонных блоках, поскольку возвращаемая ими информация теоретически зависит от действий других пользователей в системе. Количество записей может быть как положительным, так и отрицательным. При положительном значении отсчет ведется в направлении, заданном соответствующим параметром (если параметр не указан, по умолчанию используется параметр FORWARD). При отрицательном количестве записей отсчет ведется в направлении, противоположном заданному. Например, конструкция FORWARD -5 эквивалентна конструкции BACKWARD 5. Если количество записей превышает количество записей в базе, команда FETCH выбирает все существующие записи в указанном направлении. ПРИМЕЧАНИЕ В PostgreSQL 7.1.x не поддерживается обновление данных с использованием курсоров. Примеры В дальнейших примерах используется курсор cur_empl oyee, возвращающий данные из таблицы employees. Следующая команда выбирает первые две записи через курсор cur_employee: booktown=# BEGIN: BEGIN booktown=# DECLARE cur_employee CURSOR FOR booktown-# SELECT firstjiame, lastjiame FROM employees: SELECT booktown=# FETCH FORWARD 2 IN cur_employee; first_name last_name Vincent | Appel Michael Holloway (2 rows) В следующем примере конструкция BACKWARD -2 (двойное отрицание) также производит выборку двух записей в прямом направлении: booktown=# FETCH BACKWARD -2 IN cur_employee: firstjiame | last_name David Joble Ben Noble (2 rows) Наконец, следующая команда демонстрирует выборку в обратном направлении через курсор cur_employee. booktown=# FETCH BACKWARD 3 IN cur_employee; first_name | last_name David Joble Michael Holloway Vincent Appel (3 rows) |
![]() |
![]() |
![]() |