SPI_execp

Name

SPI_execp — 执行一个从 SPI_saveplan来的规划
SPI_execp(plan,
values,
nulls,
tcount)

输入

void *plan

执行规划

Datum *values

实际参数值

char *nulls

描述哪个参数获得 NULL 值的数组

'n' indicates NULL allowed
' ' indicates NULL not allowed

int tcount

将被执行的规划的记录数

输出

int

返回与SPI_exec 一样的值以及

SPI_ERROR_ARGUMENT 如果 plan 是 NULL 或 tcount < 0 , 返回此值
SPI_ERROR_PARAM 如果 values 是 NULL 并且所准备的 plan 带有一些参数.

SPI_tuptable

如果成功,则象 SPI_exec 一样初始化

SPI_processed

如果成功,则象 SPI_exec 一样初始化

描述

SPI_execp 把一个由 SPI_prepare 准备的规划存储在安全存储器中, 以免被 SPI_finish 或事务管理器释放.

目前的 Postgres 版本不能把计划好的规划存储在系统表里并从中获取它们执行. 这个(特性)将在未来的版本中实现.做为绕开的方法, 目前的版本可以在当前会话中随后击活的过程中重新使用准备好的规划. 用 SPI_execp 执行这些保存了的规划.

用法

如果 nulls 是 NULL 那么 SPI_execp 假设所有值(如果有的话)都是 NOT NULL.

注意: 如果已准备的规划参考的对象之一 (一个关系,函数,等.) 在你的会话过程中被删除(被你的后端或其他过程) 那么对此规划的 SPI_execp 执行结果将不可预料.