# SPI_执行_计划_扩展的
SPI_执行_计划_扩展 — 执行由SPI_prepare
# 概要
int SPI_execute_plan_extended(SPIPlanPtr plan,
const SPIExecuteOptions * options)
# 描述
SPI_execute_plan_extended
执行由SPI_prepare
或其兄弟姐妹之一。这个函数相当于SPI_execute_plan
,除了有关要传递给查询的参数值的信息以不同的方式呈现,并且可以传递其他执行控制选项。
查询参数值由 a 表示参数列表信息
struct,它便于传递该格式中已经可用的值。动态参数集也可以通过指定的钩子函数使用参数列表信息
.
此外,不是总是将结果元组累积到一个SPI_tuptable
结构,元组可以传递给调用者提供的目标接收器
对象,因为它们是由 executor 生成的。这对于可能生成许多元组的查询特别有用,因为数据可以即时处理,而不是在内存中累积。
# 论据
SPIPlanPtr *
计划*
准备好的语句(由SPI_prepare
)
常量 SPIExecuteOptions * *
选项*
包含可选参数的结构
来电者应始终将整个内容归零*选项
struct,然后填写他们想要设置的任何字段。这确保了代码的前向兼容性,因为将来添加到结构中的任何字段都将被定义为向后兼容,如果它们为零。目前可用的选项
*字段是:
参数列表信息 *
参数*
包含查询参数类型和值的数据结构;如果没有则为 NULL
布尔 *
只读*
真的
用于只读执行
布尔 *
允许非原子*
真的
允许 CALL 和 DO 语句的非原子执行
布尔 *
must_return_tuples*
如果真的
,如果查询不是返回元组的类型,则引发错误(这并不禁止它碰巧返回零元组的情况)
uint64 *
tcount*
要返回的最大行数,或0
无限制
目标接收器 * *
目的地*
目标接收器
将接收查询发出的任何元组的对象;如果为 NULL,结果元组被累积到一个SPI_tuptable
结构,如SPI_execute_plan
资源所有者 *
所有者*
在执行时将持有计划引用计数的资源所有者。如果为 NULL,则使用 CurrentResourceOwner。对于未保存的计划被忽略,因为 SPI 不会获取这些计划的引用计数。
# 返回值
返回值与for相同SPI_execute_plan
.
什么时候*选项->目标
一片空白,SPI_processed
和SPI_tuptable
设置为SPI_execute_plan
.什么时候选项->目标
*不为空,SPI_processed
设置为零并且SPI_tuptable
设置为 NULL。如果需要元组计数,调用者的目标接收器
对象必须计算它。