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
command string
const SPIParseOpenOptions * options
包含可选参数的结构体
调用者应始终将整个 options
结构体清零,然后填充他们想要设置的字段。这确保了代码的向前兼容性,因为在未来添加到该结构体中的任何字段都将被定义为如果它们为零时,则以向后兼容的方式运行。目前可用的 options
字段有:
ParamListInfo params
包含查询参数类型和值的结构;如果没有则为 NULL
int cursorOptions
游标选项的整数位掩码;零会产生默认行为
bool read_only
只读执行时为 true
指向包含游标的 portal 的指针。请注意,没有错误返回约定;任何错误都将通过 elog
报告。
如果您在文档中发现任何不正确之处、与您在使用特定功能时的体验不符之处或需要进一步澄清之处,请使用此表格来报告文档问题。