FETCH
Описание
Команда FETCH возвращает заданное количество записей от текущей позиции курсора. Курсоры используются только в транзакционных блоках, поскольку возвращаемая ими информация теоретически зависит от действий других пользователей в системе. Количество записей может быть как положительным, так и отрицательным. При положительном значении отсчет ведется в направлении, заданном соответствующим параметром (если параметр не указан, по умолчанию используется параметр FORWARD).
При отрицательном количестве записей отсчет ведется в направлении, противоположном заданному. Например, конструкция FORWARD – 5 эквивалентна конструкции BACKWARD 5. Если количество записей превышает количество записей в базе, команда FETCH выбирает все существующие записи в указанном направлении.
Примечание
В PostgreSQL 7.1.x не поддерживается обновление данных с использованием курсоров.
Примеры
В дальнейших примерах используется курсор cur_employee, возвращающий данные из таблицы 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)