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

SPI_execute_extended

SPI_execute_extended — 執行具有外部參數的命令

概要

int SPI_execute_extended(const char *command,
                         const SPIExecuteOptions * options)

描述

SPI_execute_extended 執行一個可能包含對外部提供的參數的引用的命令。命令文字將參數引用為 $n,並且 options->params 物件(如果提供)為每個此類符號提供值和類型資訊。各種執行選項也可以在 options 結構中指定。

options->params 物件通常應該使用 PARAM_FLAG_CONST 標記每個參數,因為一次性計畫始終用於查詢。

如果 options->dest 不是 NULL,則結果元組將傳遞給該物件,因為它們由執行器產生,而不是累積在 SPI_tuptable 中。 使用呼叫者提供的 DestReceiver 物件對於可能產生許多元組的查詢特別有用,因為資料可以即時處理,而不是累積在記憶體中。

參數

const char * command

命令字串

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 中所示

ResourceOwner owner

此欄位存在是為了與 SPI_execute_plan_extended 保持一致,但它被忽略,因為 SPI_execute_extended 使用的計畫永遠不會被保存。

返回值

返回值與 SPI_execute 的返回值相同。

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

提交更正

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