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

SPI_cursor_open_with_args

SPI_cursor_open_with_args — 用一个查询和参数建立一个游标

Synopsis

Portal SPI_cursor_open_with_args(const char *name,
                                 const char *command,
                                 int nargs, Oid *argtypes,
                                 Datum *values, const char *nulls,
                                 bool read_only, int cursorOptions)

描述

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_only

true 表示只读执行

int cursorOptions

游标选项的整数位掩码;零产生默认行为

返回值

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