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.