SPI_cursor_open_with_args — 用一个查询和参数建立一个游标
Portal SPI_cursor_open_with_args(const char *name, const char *command, intnargs, Oid *argtypes, Datum *values, const char *nulls, boolread_only, intcursorOptions)
SPI_cursor_open_with_args 建立一个游标
(内部是一个 portal),它将执行指定的查询。
大多数参数的含义与
SPI_prepare_cursor
和
SPI_cursor_open 的相应参数
相同。
对于一次性查询执行,这个函数应当优先于
SPI_prepare_cursor 加
SPI_cursor_open 的组合。
如果同一条命令要用许多不同的参数执行,
两种方法哪种更快取决于重新规划的成本与定制计划的收益之间的
权衡。
传入的参数数据会被复制进游标的 portal, 因此它可以在游标仍然存在时被释放。
现在这个函数已被弃用,推荐使用
SPI_cursor_parse_open,
后者使用更现代的 API 提供等价的功能来处理查询
参数。
const char * name
portal 的名称,或
NULL 让系统选择一个名称
const char * command命令字符串
int nargs
输入参数的数量
(
$1、
$2 等)
Oid * argtypes
一个长度为
nargs 的数组,包含参数的数据类型的
OID
Datum * values
一个长度为
nargs 的数组,包含实际的参数
值
const char * nulls
一个长度为
nargs 的数组,描述哪些参数是
空的
如果
nulls 为
NULL,则
SPI_cursor_open_with_args 假定没有参数
是空的。
否则,
nulls
数组的每个条目在相应参数值非空时应为
' ',在相应参数值为空时应为
'n'。
(在后一种情况下,相应
values 条目中的实际值无关紧要。)
注意,
nulls 不是一个文本字符串,只是一个
数组:它不需要
'\0' 终止符。
bool read_onlytrue 表示只读执行
int cursorOptions游标选项的整数位掩码;零产生默认行为
指向包含该游标的 portal 的指针。
注意没有错误返回约定;任何错误都会通过
elog 报告。