50.68. pg_cursors

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

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

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

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

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

Примечание

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

Таблица 50.69. Столбцы pg_cursors

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

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