PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# SPI_cursor_open

## 名称

SPI_cursor_open -- 用`SPI_prepare`创建的语句设置一个游标

## 大纲

    Portal SPI_cursor_open(const char * name, SPIPlanPtr plan,
                           Datum * values, const char * nulls,
                           bool read_only)

## 描述

`SPI_cursor_open`设置一个游标(内部叫入口)， 这个游标可以执行`SPI_prepare`准备的语句。 参数和对应的`SPI_execute_plan`参数具有相同的含义。

使用游标而不是直接执行语句有两个优点。首先，结果行可以每次检索一小部分， 避免那些返回大量数据行的查询造成的内存缺乏。第二， 一个入口可以在当前过程之外存活(实际上，它可以活到当前事务的结尾)。 给过程的调用者返回一个入口名是一种返回行结果集的方法。

传入参数数据将被拷贝到游标的入口，所以它在游标仍然存在时可以被释放。

## 参数

`const char * `name``

  入口的名字，或者是用`NULL`让系统选择一个名字

`SPIPlanPtr `plan``

  预备语句（`SPI_prepare`返回的）

`Datum * `values``

  一个实际参数值的数组。必须和语句的参数个数相等。

`const char * `nulls``

  一个描述哪些参数是 NULL 的数组。必须和语句的参数个数相等。

  如果`nulls`是`NULL`，那么`SPI_cursor_open` 假设没有参数为空。否则，如果对应的参数值是非空的，那么`nulls` 数组的每一项都应该是`' '`，或者如果对应的参数值为空，那么 `nulls`数组的每一项都是`'n'`。 （在后面这种情况下，对应的`values`项中的实际值无关紧要。） 请注意，`nulls`不是文本字符串，只是一个数组： 它不需要`'\0'`终止符。

`bool `read_only``

  `true`用于只读的执行

## 返回值

指向包含游标入口的指针。请注意，这里没有错误返回约定； 任何错误都将通过`elog`报告。

上一页 | 起始页 | 下一页
SPI_execp | 上一级 | SPI_cursor_open_with_args