This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the
current
version, or one of the other supported versions listed above instead.
SPI_cursor_open
Name
SPI_cursor_open -- Sets up a cursor using
a plan created with
SPI_prepare
Synopsis
SPI_cursor_open(name,
plan,
values,
nulls)
Inputs
- char *name
-
Name for portal, or NULL to let the system select a
name
- void *plan
-
Execution plan
- Datum *values
-
Actual parameter values
- char *nulls
-
Array describing which parameters are NULLs
n indicates NULL
(values[] entry ignored) |
space indicates not NULL (values[] entry is
valid) |
Outputs
- Portal
-
Pointer to Portal containing cursor, or NULL on
error
Description
SPI_cursor_open
sets up a cursor
(internally, a Portal) that will execute a plan prepared by
SPI_prepare
.
Using a cursor instead of executing the plan directly has two
benefits. First, the result rows can be retrieved a few at a
time, avoiding memory overrun for queries that return many rows.
Second, a Portal can outlive the current procedure (it can, in
fact, live to the end of the current transaction). Returning the
portal name to the procedure's caller provides a way of returning
a rowset result.
Usage
If nulls is NULL then
SPI_cursor_open
assumes that all
parameters (if any) are NOT NULL.