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_processed
和 SPI_tuptable
的設定與 SPI_execute
中相同。 當 options->dest
不是 NULL 時,SPI_processed
設定為零,並且 SPI_tuptable
設定為 NULL。 如果需要元組計數,則呼叫者的 DestReceiver
物件必須計算它。
如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。