历史版本。 PostgreSQL 6.4 已结束支持。 请参阅 当前版本手册.
大纲
SPI_execp(plan,values,nulls,tcount)
输入
- void *
plan 执行计划
- Datum *
values 实际参数值
- char *
nulls 描述哪些参数取 NULL 的数组
'n' 表示允许 NULL ' ' 表示不允许 NULL - int
tcount 该计划将要执行的元组数
输出
- int
返回与
SPI_exec相同的值,以及→ SPI_ERROR_ARGUMENTplan为 NULL 或tcount< 0 时→ SPI_ERROR_PARAMvalues为 NULL,而plan在准备时带有参数时。- SPI_tuptable
成功时,其初始化方式与
SPI_exec中相同- SPI_processed
成功时,其初始化方式与
SPI_exec中相同
描述
SPI_execp
把由 SPI_prepare 准备的计划存储在安全内存中,使其不会被 SPI_finish 或事务管理器释放。
在当前版本的 Postgres 中,还无法把预备计划存储在系统目录中并在执行时从那里取出。这一点将在未来的版本中实现。作为权宜之计,可以在当前会话中该过程的后续调用里复用预备计划。使用 SPI_execp 执行这个保存的计划。
用法
如果 nulls
为 NULL,则
SPI_execp
假定所有值(如果有的话)都非 NULL。
注意
如果预备计划所引用的对象(关系、函数等)在会话期间被删除(由你的后端或另一个进程删除),那么对该计划执行 SPI_execp
的结果将是不可预知的。