## Name

SPI_is_cursor_plan — returns `true` if a plan prepared by `SPI_prepare` can be used with `SPI_cursor_open`

## Synopsis

    bool SPI_is_cursor_plan(void * plan)

## Description

`SPI_is_cursor_plan` returns `true` if a plan prepared by `SPI_prepare` can be passed as an argument to `SPI_cursor_open` and `false` if that is not the case. The criteria are that the `plan` represents one single command and that this command is a `SELECT` without an `INTO` clause.

## Arguments

`void * `plan``

  execution plan (returned by `SPI_prepare`)

## Return Value

`true` or `false` to indicate if the `plan` can produce a cursor or not, or `SPI_ERROR_ARGUMENT` if the `plan` is `NULL`