支援的版本: 目前 (17) / 16 / 15 / 14
開發版本: devel

SPI_execute_plan_extended

SPI_execute_plan_extended — 執行由 SPI_prepare 準備的語句

概要

int SPI_execute_plan_extended(SPIPlanPtr plan,
                              const SPIExecuteOptions * options)

描述

SPI_execute_plan_extended 執行由 SPI_prepare 或其同類函數準備的語句。此函數等同於 SPI_execute_plan,不同之處在於,關於要傳遞給查詢的參數值的資訊以不同的方式呈現,並且可以傳遞額外的執行控制選項。

查詢參數值由 ParamListInfo 結構表示,這對於傳遞已經以該格式可用的值非常方便。也可以透過在 ParamListInfo 中指定的 Hook 函數來使用動態參數集。

此外,元組可以傳遞給呼叫者提供的 DestReceiver 物件,而不是總是將結果元組累積到 SPI_tuptable 結構中。這對於可能產生許多元組的查詢特別有用,因為可以即時處理資料,而不是累積在記憶體中。

引數

SPIPlanPtr plan

已準備的語句 (由 SPI_prepare 傳回)

const SPIExecuteOptions * options

包含可選引數的結構

呼叫者應始終將整個 options 結構歸零,然後填寫他們想要設定的任何欄位。這可確保程式碼的前向相容性,因為未來新增到結構中的任何欄位都將被定義為以向後相容的方式運作 (如果它們為零)。目前可用的 options 欄位為

ParamListInfo params

包含查詢參數類型和值的資料結構;如果沒有則為 NULL

bool read_only

對於唯讀執行為 true

bool allow_nonatomic

true 允許非原子執行 CALL 和 DO 語句 (但除非 SPI_OPT_NONATOMIC 旗標傳遞給 SPI_connect_ext,否則會忽略此欄位)

bool must_return_tuples

如果 true,如果查詢不是傳回元組的類型,則引發錯誤 (這並不禁止它剛好傳回零個元組的情況)

uint64 tcount

要傳回的最大列數,或 0 表示沒有限制

DestReceiver * dest

DestReceiver 物件,將接收查詢發出的任何元組;如果為 NULL,則結果元組會累積到 SPI_tuptable 結構中,如 SPI_execute_plan 中所示

ResourceOwner owner

資源擁有者,在執行時將保留計畫的參考計數。如果為 NULL,則使用 CurrentResourceOwner。對於非儲存的計畫會忽略,因為 SPI 不會取得這些計畫的參考計數。

傳回值

傳回值與 SPI_execute_plan 的傳回值相同。

options->dest 為 NULL 時,SPI_processedSPI_tuptable 的設定方式與 SPI_execute_plan 中相同。當 options->dest 不為 NULL 時,SPI_processed 設定為零,SPI_tuptable 設定為 NULL。如果需要元組計數,則呼叫者的 DestReceiver 物件必須計算它。

提交更正

如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表格來回報文件問題。