SPI_execute_plan
函数名
SPI_execute_plan -- 执行一个
SPI_prepare
准备的查询规划
原型
int SPI_execute_plan(void * plan, Datum * values, const char * nulls,
bool read_only, long count)
描述
SPI_execute_plan
执行一个 SPI_prepare
准备的规划。read_only 和 count 的含义和 SPI_execute
里面的相同。
参数
- void * plan
执行规划(SPI_prepare
返回)
- Datum * values
一个实际的参数值的数组。比如和规划的参数个数长度相同。
- const char * nulls
一个描述哪个参数是空的数组。必须和规划的参数个数相同。n 表示一个 NULL(在 values 里面对应的条目将被忽略);一个空格表示一个非 NULL(在 values 里对应条目是有效的)。
如果 nulls 是 NULL ,那么 SPI_execute_plan
就认为没有参数是空。
- bool read_only
只读执行时为 true
- long count
执行或返回的最大行数
返回值
返回值和 SPI_execute
的一样,另外还有下面几个可能的(负值)结果:
- SPI_ERROR_ARGUMENT
如果 plan 是 NULL 或 count 小于 0
- SPI_ERROR_PARAM
如果 values 是 NULL 并且 plan 准备了一些参数
成功时,SPI_processed 和 SPI_tuptable 的设置和 SPI_execute
里一样。
注意
如果准备好了的规划引用的一个对象(表、函数等等)在会话过程中被删除,那么 SPI_execute_plan
对此规划的执行结果将不可预料。