53.70. pg_cursors

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

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

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

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

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

Примечание

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

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

Тип столбца

Описание

name text

Имя курсора

statement text

Дословная строка запроса, создавшего данный курсор

is_holdable bool

True, если курсор удерживаемый (то есть, к нему можно обращаться после того, как будет зафиксирована транзакция, в которой он объявлен); в противном случае — false

is_binary bool

True, если курсор был объявлен с указанием BINARY; в противном случае — false

is_scrollable bool

True, если курсор прокручиваемый (то есть, позволяет получать строки непоследовательным образом); в противном случае — false

creation_time timestamptz

Время, в которое был объявлен курсор


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