## SPI_prepare_cursor

SPI_prepare_cursor — prepare a statement, without executing it yet

## Synopsis

    SPIPlanPtr SPI_prepare_cursor(const char * command, int nargs,
                                  Oid * argtypes, int cursorOptions)

## Description

`SPI_prepare_cursor` is identical to `SPI_prepare`, except that it also allows specification of the planner's “cursor options” parameter. This is a bit mask having the values shown in `nodes/parsenodes.h` for the `options` field of `DeclareCursorStmt`. `SPI_prepare` always takes the cursor options as zero.

## Arguments

`const char * `command``

  command string

`int `nargs``

  number of input parameters (`$1`, `$2`, etc.)

`Oid * `argtypes``

  pointer to an array containing the OIDs of the data types of the parameters

`int `cursorOptions``

  integer bit mask of cursor options; zero produces default behavior

## Return Value

`SPI_prepare_cursor` has the same return conventions as `SPI_prepare`.

## Notes

Useful bits to set in `cursorOptions` include `CURSOR_OPT_SCROLL`, `CURSOR_OPT_NO_SCROLL`, `CURSOR_OPT_FAST_PLAN`, `CURSOR_OPT_GENERIC_PLAN`, and `CURSOR_OPT_CUSTOM_PLAN`. Note in particular that `CURSOR_OPT_HOLD` is ignored.