pg_cursors#
В представлении pg_cursors перечислены курсоры, которые доступны в данный момент. Курсоры могут быть определены несколькими способами:
с помощью оператора
DECLAREв SQL;через сообщение Bind в протоколе frontend/backend, как описано в разделе «Поток сообщений»;
через интерфейс программирования сервера (SPI).
Представление pg_cursors отображает курсоры, созданные любым из этих способов. Курсоры существуют только в течение времени транзакции, которая их определяет, если только они не были объявлены WITH HOLD. Поэтому курсоры без возможности удержания присутствуют в представлении только до конца создавшей их транзакции.
Примечание:
Курсоры используются внутри для реализации некоторых компонентов PostgreSQL, таких как процедурные языки. Таким образом, представление
pg_cursorsможет включать курсоры, которые не были явно созданы пользователем
Столбец |
Тип данных |
Описание |
|---|---|---|
name |
text |
Имя курсора |
statement |
text |
Строка дословного запроса, отправленная для объявления этого курсора |
is_holdable |
bool |
true, если курсор является удерживаемым (то есть к нему можно получить доступ после того, как транзакция, которая объявила курсор, зафиксирована); false в противном случае |
is_binary |
bool |
true, если курсор был объявлен BINARY; false в противном случае |
is_scrocable |
bool |
true, если курсор можно прокрутить (то есть он позволяет извлекать строки беспоследовательным образом); false в противном случае |
creation_time |
timestamptz |
Время объявления курсора |
Представление pg_cursors доступно только для чтения