SPI_prepare
准备的已准备好规划需要的参数个数SPI_prepare
准备的已准备好规划的指定参数的 typeidSPI_prepare
准备的规划可以和 SPI_cursor_open
一起使用,则返回 trueSPI_prepare
准备的查询规划SPI_prepare
创建的规划设置一个游标SPI_execute
或者类似函数创建的行集The 服务器编程接口(SPI)给在用户定义的 C 函数里面运行 SQL 查询的能力。SPI 是一套接口函数,用于简化对分析器、规划器、优化器、执行器的访问。SPI 还进行一些内存管理的工作。
【注意】过程语言的存在也提供了其它的一些在过程里执行 SQL 命令的方法。这些语言中的大部分本身就是基于 SPI 的,因此这份文档可能会对那些语言的用户同样有帮助。
为了避免混淆,将使用"函数"(function)来代表 SPI 接口函数,用"过程"(procedure)代表用户用 SPI 定义的 C 函数。
注意,如果一条通过 SPI 调用的命令失败,那么控制不会返回到你的过程中。取而代之的是,你的过程执行所在的事务或者子事务全部回滚。这一点看起来可能很奇怪,因为大多数 SPI 函数的文档里都有错误返回习惯。不过,那些习惯只适用于在 SPI 函数自己内部检测到的错误。可以通过在你自己的可能失败的 SPI 调用周围建立一个子事务的方法来在错误之后恢复。目前还没有写这方面的文档,因为所需要的机制仍然在变化。
如果执行成功了,SPI 函数返回一个非负结果(或者通过返回一个整数值或放在全局变量 SPI_result 里,像下面描述的那样)。出错时,返回一个负数或 NULL 结果。
使用 SPI 的源代码文件必须包含头文件 executor/spi.h