# 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_processedSPI_tuptable设置为SPI_执行.什么时候选项->目标*不为空,SPI_processed设置为零并且SPI_tuptable设置为 NULL。如果需要元组计数,调用者的目标接收器对象必须计算它。