| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
伺服器編程接口 (SPI) 給我們在用戶定義的C函數里面執行 SQL 查詢的能力。 SPI 是一套接口函數,用於簡化對分析器,規劃器,優化器,和執行器的訪問。 SPI 還進行一些內存管理的工作。
注意: 過程語言的存在也提供了其它的一些在過程裡執行 SQL 命令的方法。 這些語言中的大部分本身就是基於 SPI的, 因此這份文件可能會對那些語言的用戶同樣有幫助。
為了避免混淆,我們將使用函數(function) 來代資料表SPI接口函數, 用過程(procedure) 代資料表用戶用 SPI 定義的 C 函數。
注意,一條透過 SPI 調用的命令失敗,那麼控制不會返回到您的過程中。 取而代之的是,您的過程執行所在的交易或者子交易作都將回捲。 (這一點看起來可能很奇怪,因為大多數 SPI 函數的文件裡都有錯誤返回習慣。 不過,那些習慣只適用於在 SPI 函數自己內部檢測到的錯誤。) 我們可以透過在您自己的可能失敗的 SPI 調用周圍建立一個子交易的方法來在錯誤之後恢復。 目前我們還沒有寫這方面的文件,因為所需要的機制仍然在變化。
如果執行成功了,SPI 函數返回一個非負結果 (或者透過返回一個整數值或放在全局變量SPI_result裡, 象下面描述的那樣)。出錯時,返回一個負數或 NULL 結果。
使用 SPI 的原始碼文件必須包含頭文件 executor/spi.h。