The pg_cursors view lists the cursors that are currently available. Cursors can be defined in several ways:
via the DECLARE statement in SQL
via the Bind message in the frontend/backend protocol, as described in Section 52.2.3
via the Server Programming Interface (SPI), as described in Section 46.1
The pg_cursors view displays cursors
created by any of these means. Cursors only exist for the duration
of the transaction that defines them, unless they have been
declared WITH HOLD
. Therefore non-holdable
cursors are only present in the view until the end of their
creating transaction.
Cursors are used internally to implement some of the components of PostgreSQL™, such as procedural languages. Therefore, the pg_cursors view might include cursors that have not been explicitly created by the user.
Table 51.70. pg_cursors Columns
Name | Type | Description |
---|---|---|
name | text | The name of the cursor |
statement | text | The verbatim query string submitted to declare this cursor |
is_holdable | boolean |
true if the cursor is holdable (that is, it
can be accessed after the transaction that declared the cursor
has committed); false otherwise
|
is_binary | boolean |
true if the cursor was declared
BINARY ; false
otherwise
|
is_scrollable | boolean |
true if the cursor is scrollable (that is, it
allows rows to be retrieved in a nonsequential manner);
false otherwise
|
creation_time | timestamptz | The time at which the cursor was declared |
The pg_cursors view is read only.