服务器编程接口

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# 章 44. 服务器编程接口

服务器编程接口(SPI) 给在用户定义的C函数里面运行SQL 查询的能力。SQL是一套接口函数，用于简化对分析器、 规划器和执行器的访问。SQL还进行一些内存管理的工作。

> 注意: 过程语言的存在也提供了其它的一些在过程里执行 SQL 命令的方法。 这些语言中的大部分本身就是基于 SPI 的， 因此这份文档可能会对那些语言的用户同样有帮助。

为了避免混淆，将使用术语"函数"(function)来代表 SPI接口函数，用"过程"(procedure) 代表用户用SPI定义的 C 函数。

注意，如果一条通过 SPI 调用的命令失败，那么控制不会返回到你的过程中。 取而代之的是，你的过程执行所在的事务或者子事务全部回滚。 这一点看起来可能很奇怪，因为大多数 SPI 函数的文档里都有错误返回习惯。 不过，那些习惯只适用于在 SPI 函数自己内部检测到的错误。 可以通过在你自己的可能失败的 SPI 调用周围建立一个子事务的方法来在错误之后恢复控制。 目前还没有写这方面的文档，因为所需要的机制仍然在变化。

如果执行成功了，SPI函数返回一个非负结果 (或者通过返回一个整数值或放在全局变量`SPI_result`里， 像下面描述的那样)。出错时，返回一个负数或`NULL`结果。

使用 SPI 的源代码文件必须包含头文件`executor/spi.h`。

上一页 | 起始页 | 下一页
环境变量 | 上一级 | 接口函数