48.57. pg_cursors

В представлении pg_cursors перечисляются курсоры, доступные в данный момент. Курсоры могут быть созданы несколькими способами:

  • через оператор DECLARE в SQL

  • через сообщение Bind в клиент-серверном протоколе, как описано в Подразделе 49.2.3

  • через интерфейс программирования сервера (SPI, Server Programming Interface), как описано в Разделе 44.1

В представлении pg_cursors показываются курсоры, полученные любым способом. Курсор существует только на протяжении транзакции, в которой он определён, если только он не был объявлен с указанием WITH HOLD. Поэтому не удерживаемые курсоры показываются в этом представлении только пока не завершится создавшая их транзакция.

Замечание: Курсоры используются внутри системы для реализации некоторых компонентов PostgreSQL, таких как процедурные языки. Таким образом, в представлении pg_cursors могут быть курсоры, которые пользователи не создавали явно.

Таблица 48-58. Колонки pg_cursors

ИмяТипОписание
nametextИмя курсора
statementtextДословная строка запроса, создавшего данный курсор
is_holdablebooleanTrue, если курсор удерживаемый (то есть, к нему можно обращаться после того, как будет зафиксирована транзакция, в которой он объявлен); в противном случае — false
is_binarybooleanTrue, если курсор был объявлен с указанием BINARY; в противном случае — false
is_scrollablebooleanTrue, если курсор прокручиваемый (то есть, позволяет получать строки непоследовательным образом); в противном случае — false
creation_timetimestamptzВремя, в которое был объявлен курсор

Представление pg_cursors доступно только для чтения.