Postgresql 中文操作指南

Chapter 47. Server Programming Interface

Table of Contents

Server Programming Interface (SPI) 使用户自定义 C 函数的编写者能够在其函数或过程中运行 SQL 命令。SPI 是一组界面函数,用于简化对解释器、规划器和执行器的访问。SPI 还会进行一些内存管理。

Note

可用的过程语言提供了各种方法来从函数执行 SQL 命令。这些功能中的大多数都是基于 SPI 的,因此本文档可能对这些语言的用户也有用。

请注意,如果通过 SPI 调用的命令失败,那么不会将控制权返回给您的 C 函数。相反,将回滚您的 C 函数执行所在的事务或子事务。(给定 SPI 函数大多有记录的错误返回约定,这可能看起来令人惊讶。但是,这些约定仅适用于 SPI 函数本身中检测到的错误。)可以通过在可能失败的 SPI 调用周围建立自己的子事务来在错误后恢复控制。

SPI 函数在成功时返回非负结果(通过返回的整数值或在全局变量 SPI_result 中,如以下所述)。如果发生错误,将返回负结果或 NULL

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