---
title: "SPI_cursor_open_with_paramlist"
id: spi-spi-cursor-open-with-paramlist
pg_version: "20devel"
---
# SPI_cursor_open_with_paramlist — set up a cursor using parameters
## Synopsis
```
Portal SPI_cursor_open_with_paramlist(const char *name,
SPIPlanPtr plan,
ParamListInfo params,
bool read_only)
```
## Description
`SPI_cursor_open_with_paramlist` sets up a cursor (internally, a portal) that will execute a statement prepared by `SPI_prepare`. This function is equivalent to `SPI_cursor_open` except that information about the parameter values to be passed to the query is presented differently. The `ParamListInfo` representation can be convenient for passing down values that are already available in that format. It also supports use of dynamic parameter sets via hook functions specified in `ParamListInfo`.
The passed-in parameter data will be copied into the cursor's portal, so it can be freed while the cursor still exists.
## Arguments
**`const char * name`**
name for portal, or `NULL` to let the system select a name **`SPIPlanPtr plan`**
prepared statement (returned by `SPI_prepare`) **`ParamListInfo params`**
data structure containing parameter types and values; NULL if none **`bool read_only`**
`true` for read-only execution
## Return Value
Pointer to portal containing the cursor. Note there is no error return convention; any error will be reported via `elog`.