支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

第 45 章。伺服器程式設計介面

目錄

45.1. 介面函式
SPI_connect — 將 C 函式連接到 SPI 管理器
SPI_finish — 從 SPI 管理器斷開 C 函式的連線
SPI_execute — 執行指令
SPI_exec — 執行讀/寫指令
SPI_execute_extended — 使用外部參數執行指令
SPI_execute_with_args — 使用外部參數執行指令
SPI_prepare — 準備陳述式,但不執行
SPI_prepare_cursor — 準備陳述式,但不執行
SPI_prepare_extended — 準備陳述式,但不執行
SPI_prepare_params — 準備陳述式,但不執行
SPI_getargcount — 傳回 SPI_prepare 準備的陳述式所需的引數數量
SPI_getargtypeid — 傳回 SPI_prepare 準備的陳述式引數的資料類型 OID
SPI_is_cursor_plan — 如果 SPI_prepare 準備的陳述式可用於 SPI_cursor_open,則傳回 true
SPI_execute_plan — 執行 SPI_prepare 準備的陳述式
SPI_execute_plan_extended — 執行 SPI_prepare 準備的陳述式
SPI_execute_plan_with_paramlist — 執行 SPI_prepare 準備的陳述式
SPI_execp — 以讀/寫模式執行陳述式
SPI_cursor_open — 使用 SPI_prepare 建立的陳述式設定游標
SPI_cursor_open_with_args — 使用查詢和參數設定游標
SPI_cursor_open_with_paramlist — 使用參數設定游標
SPI_cursor_parse_open — 使用查詢字串和參數設定游標
SPI_cursor_find — 按名稱尋找現有的游標
SPI_cursor_fetch — 從游標中提取一些列
SPI_cursor_move — 移動游標
SPI_scroll_cursor_fetch — 從游標中提取一些列
SPI_scroll_cursor_move — 移動游標
SPI_cursor_close — 關閉游標
SPI_keepplan — 儲存準備好的陳述式
SPI_saveplan — 儲存準備好的陳述式
SPI_register_relation — 使暫時性命名關聯可在 SPI 查詢中按名稱使用
SPI_unregister_relation — 從登錄檔中移除暫時性命名關聯
SPI_register_trigger_data — 使暫時性觸發資料可在 SPI 查詢中使用
45.2. 介面支援函式
SPI_fname — 確定指定欄號的欄名稱
SPI_fnumber — 確定指定欄名稱的欄號
SPI_getvalue — 傳回指定欄位的字串值
SPI_getbinval — 傳回指定欄位的二進位值
SPI_gettype — 傳回指定欄位的資料型別名稱
SPI_gettypeid — 傳回指定欄位的資料型別 OID
SPI_getrelname — 傳回指定關聯的名稱
SPI_getnspname — 傳回指定關聯的命名空間
SPI_result_code_string — 以字串形式傳回錯誤代碼
45.3. 記憶體管理
SPI_palloc — 在上層執行器環境中分配記憶體
SPI_repalloc — 在上層執行器環境中重新分配記憶體
SPI_pfree — 在上層執行器環境中釋放記憶體
SPI_copytuple — 在上層執行器環境中建立一個資料列的副本
SPI_returntuple — 準備將一個元組作為 Datum 傳回
SPI_modifytuple — 透過替換給定資料列的選定欄位來建立資料列
SPI_freetuple — 釋放在上層執行器環境中分配的資料列
SPI_freetuptable — 釋放由 SPI_execute 或類似函數建立的資料列集合
SPI_freeplan — 釋放先前儲存的預備語句
45.4. 交易管理
SPI_commit — 提交目前的交易
SPI_rollback — 中止目前的交易
SPI_start_transaction — 已過時的函數
45.5. 資料變更的可見性
45.6. 範例

伺服器程式設計介面 (SPI) 讓使用者定義的C函數的作者能夠在其函數或程序中執行SQL命令。SPI是一個介面函數集合,用於簡化對語法分析器、規劃器和執行器的存取。SPI也進行一些記憶體管理。

注意

可用的程序語言提供了各種從函數執行 SQL 命令的方式。 這些設施大多基於 SPI,因此此文件也可能對這些語言的使用者有所幫助。

請注意,如果透過 SPI 呼叫的命令失敗,則控制權不會傳回給您的 C 函數。 而是會回滾您的 C 函數執行的交易或子交易。(考慮到 SPI 函數大多具有已記錄的錯誤傳回慣例,這可能看起來令人驚訝。 但是,這些慣例僅適用於 SPI 函數本身中偵測到的錯誤。) 可以透過建立自己的子交易來恢復錯誤後的控制,該子交易環繞可能失敗的 SPI 呼叫。

SPI函數在成功時傳回非負數的結果(透過傳回的整數值或在全域變數 SPI_result 中,如下所述)。 發生錯誤時,將傳回負數的結果或 NULL

使用 SPI 的原始程式碼檔案必須包含標頭檔 executor/spi.h

提交更正

如果您在文件中發現任何不正確、與特定功能的體驗不符或需要進一步說明的內容,請使用此表單來報告文件問題。