SPI_cursor_open(name, plan, values, nulls)
Name for portal, or NULL to let the system select a name
Actual parameter values
Array describing which parameters are NULLs
|n indicates NULL (values entry ignored)|
|space indicates not NULL (values entry is valid)|
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.