On this page
SPI_cursor_open
SPI_cursor_open —使用使用SPI_prepare
创建的语句设置游标
Synopsis
Portal SPI_cursor_open(const char * name, SPIPlanPtr plan,
Datum * values, const char * nulls,
bool read_only)
Description
SPI_cursor_open
设置了一个游标(内部为门户),该游标将执行SPI_prepare
准备的语句。这些参数与SPI_execute_plan
的相应参数具有相同的含义。
使用游标而不是直接执行语句有两个好处。首先,可以一次检索几行结果,从而避免了返回很多行的查询的内存溢出。其次,门户网站的寿命可以超过当前过程(实际上,它可以存活到当前事务的末尾)。将门户网站名称返回给过程的调用者提供了一种返回行集作为结果的方法。
传入的参数数据将被复制到游标的门户中,因此可以在游标仍然存在时将其释放。
Arguments
const char * name
- 门户的名称,或
NULL
以让系统选择名称
- 门户的名称,或
SPIPlanPtr plan
- 准备好的语句(由
SPI_prepare
返回)
- 准备好的语句(由
Datum * values
- 实际参数值的数组。长度必须与语句的参数个数相同。
const char * nulls
- 一个数组,描述哪些参数为空。长度必须与语句的参数个数相同。
如果* nulls
为NULL
,则SPI_cursor_open
假定没有参数为空。否则,如果相应的参数值非空,则 nulls
数组的每个条目应为' '
,如果相应的参数值为空,则应为'n'
。 (在后一种情况下,相应的 values
条目中的实际值无关紧要.)请注意, nulls
*不是文本字符串,而只是数组:它不需要'\0'
终止符。
bool read_only
true
用于只读执行
Return Value
指向包含光标的门户的指针。注意没有错误返回约定。任何错误将通过elog
报告。