| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
服務器編程接口 (SPI) 給我們在用戶定義的C函數裡面運行 SQL 查詢的能力。 SPI 是一套接口函數,用于簡化對分析器,規劃器,優化器,和執行器的訪問。 SPI 還進行一些內存管理的工作。
注意: 過程語言的存在也提供了其它的一些在過程裡執行 SQL 命令的方法。 這些語言中的一部分本身就是基于 SPI 或者以 SPI 為模版實現的, 因此這份文檔可能會對那些語言的用戶同樣有幫助。
為了避免混淆,我們將使用函數(function) 來代表SPI接口函數, 用過程(procedure) 代表用戶用 SPI 定義的 C 函數。
注意,如果在你的過程裡執行查詢時,事務退出了,那麼控制不會返回到你的過程中。 相反,所有工作都將回卷並且服務器將等待客戶端的另一個命令。 一個相關的限制是在過程中不能執行 BEGIN,COMMIT,和 ROLLBACK (事務控制語句)。這兩點都可能會在以後的版本中修正。
如果執行成功了,SPI 函數返回一個非負結果 (或者通過返回一個整數值或放在全局變量SPI_result裡, 象下面描述的那樣)。出錯時,返回一個負數或 NULL 結果。
使用 SPI 的源代碼文件必須包含頭文件 executor/spi.h。