SPI_cursor_parse_open — 用一个查询字符串和参数建立一个游标
Portal SPI_cursor_parse_open(const char *name, const char *command, const SPIParseOpenOptions *options)
SPI_cursor_parse_open 建立一个游标
(内部是一个 portal),它将执行指定的查询字符串。
这可与
SPI_prepare_cursor 加
SPI_cursor_open_with_paramlist 的组合
相比,只是查询字符串中的参数引用完全通过提供一个
ParamListInfo 对象来处理。
对于一次性查询执行,这个函数应当优先于
SPI_prepare_cursor 加
SPI_cursor_open_with_paramlist 的
组合。
如果同一条命令要用许多不同的参数执行,
两种方法哪种更快取决于重新规划的成本与定制计划的收益之间的
权衡。
options->params 对象通常应当把每个
参数标记为
PARAM_FLAG_CONST 标志,
因为查询总是使用一次性计划。
传入的参数数据会被复制进游标的 portal, 因此它可以在游标仍然存在时被释放。
const char * name
portal 的名称,或
NULL 让系统选择一个名称
const char * command命令字符串
const SPIParseOpenOptions * options包含可选参数的结构
调用者应当始终把整个
options
结构清零,然后填入想设置的字段。
这确保代码的前向兼容性,因为将来加入该结构的任何字段
都会被定义为在为零时以向后兼容的方式行事。
当前可用的
options 字段有:
ParamListInfo params包含查询参数类型和值的数据结构;没有则为 NULL
int cursorOptions游标选项的整数位掩码;零产生默认行为
bool read_onlytrue 表示只读执行
指向包含该游标的 portal 的指针。
注意没有错误返回约定;任何错误都会通过
elog 报告。