# SPI_执行_扩展的
SPI_执行_扩展 — 执行带有行外参数的命令
# 概要
int SPI_execute_extended(const char *command,
const SPIExecuteOptions * options)
# 描述
SPI_execute_extended
执行可能包含对外部提供的参数的引用的命令。命令文本将参数称为$*
n*
, 和*选项->参数
对象(如果提供)为每个此类符号提供值和类型信息。可以在选项
*结构,也是。
这*选项->参数
*对象通常应该用PARAM_FLAG_CONST
标志,因为查询始终使用一次性计划。
如果*选项->目标
*不为 NULL,则结果元组在由执行程序生成时传递给该对象,而不是累积在SPI_tuptable
.使用来电者提供的目标接收器
object 对于可能生成许多元组的查询特别有用,因为数据可以即时处理,而不是在内存中累积。
# 论据
常量字符 * *
命令*
命令字符串
常量 SPIExecuteOptions * *
选项*
包含可选参数的结构
来电者应始终将整个内容归零*选项
struct,然后填写他们想要设置的任何字段。这确保了代码的前向兼容性,因为将来添加到结构中的任何字段都将被定义为向后兼容,如果它们为零。目前可用的选项
*字段是:
参数列表信息 *
参数*
包含查询参数类型和值的数据结构;如果没有则为 NULL
布尔 *
只读*
真的
用于只读执行
布尔 *
允许非原子*
真的
允许 CALL 和 DO 语句的非原子执行
布尔 *
must_return_tuples*
如果真的
,如果查询不是返回元组的类型,则引发错误(这并不禁止它碰巧返回零元组的情况)
uint64 *
tcount*
要返回的最大行数,或0
无限制
目标接收器 * *
目的地*
目标接收器
将接收查询发出的任何元组的对象;如果为 NULL,结果元组被累积到一个SPI_tuptable
结构,如SPI_执行
资源所有者 *
所有者*
存在此字段是为了与SPI_execute_plan_extended
,但它被忽略了,因为使用的计划SPI_execute_extended
永远不会被保存。
# 返回值
返回值与for相同SPI_执行
.
什么时候*选项->目标
一片空白,SPI_processed
和SPI_tuptable
设置为SPI_执行
.什么时候选项->目标
*不为空,SPI_processed
设置为零并且SPI_tuptable
设置为 NULL。如果需要元组计数,调用者的目标接收器
对象必须计算它。