SPI_execute_plan

Name

SPI_execute_plan -- 执行一个 SPI_prepare 准备的查询规划

Synopsis

int SPI_execute_plan(void * plan, Datum * values, const char * nulls,
                     bool read_only, int count)

描述

SPI_execute_plan 执行一个 SPI_prepare 准备的规划。 read_onlycount 的含义和 SPI_execute 里面的相同。

参数

void * plan

执行规划(SPI_prepare 返回的东西)

Datum *values

一个实际的参数值的数组。比如和规划的参数个数长度相同。

const char * nulls

一个描述哪个参数是空的数组。必须和规划的参数个数相同。 n 表示一个空值(在 values 里面对应的条目将被忽略); 一个空格表示一个非空值(在 values 里对应条目是有效的)。

如果 nullsNULL,那么 SPI_execute_plan 就认为没有参数是空。

bool read_only

只读执行时为 true

int count

执行或返回的最大行数

返回值

返回值和 SPI_execute 的一样,另外还有下面几个可能的(负值)结果:

SPI_ERROR_ARGUMENT

如果 planNULL 或者 count 小于 0

SPI_ERROR_PARAM

如果 valuesNULLplan 准备了一些参数

成功时, SPI_processedSPI_tuptable 的设置和 SPI_execute 里一样。

注意

如果准备好了的规划引用的一个对象(表,函数,等等。)在会话过程中被删除, 那么 SPI_execute_plan 对此规划的执行结果将不可预料。