SPI_execute_plan_extended — 執行由 SPI_prepare
準備的語句
int SPI_execute_plan_extended(SPIPlanPtrplan
, 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_processed
和 SPI_tuptable
的設定方式與 SPI_execute_plan
中相同。當 options->dest
不為 NULL 時,SPI_processed
設定為零,SPI_tuptable
設定為 NULL。如果需要元組計數,則呼叫者的 DestReceiver
物件必須計算它。
如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表格來回報文件問題。