PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

SPI_cursor_parse_open

SPI_cursor_parse_open — 用一个查询字符串和参数建立一个游标

Synopsis

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_only

true 表示只读执行

返回值

指向包含该游标的 portal 的指针。 注意没有错误返回约定;任何错误都会通过 elog 报告。