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.