支援版本: 目前 (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

SPI_execute_with_args

SPI_execute_with_args — 執行帶有外部參數的命令

概要

int SPI_execute_with_args(const char *command,
                          int nargs, Oid *argtypes,
                          Datum *values, const char *nulls,
                          bool read_only, long count)

描述

SPI_execute_with_args 執行一個可能包含對外部提供參數的引用的命令。 命令文本將參數表示為 $n,並且呼叫指定每個此類符號的資料類型和值。read_onlycount 的解釋與 SPI_execute 中的相同。

SPI_execute 相比,此常式的主要優點是,資料值可以插入到命令中,而無需繁瑣的引用/跳脫,從而大大降低了 SQL 注入攻擊的風險。

可以使用 SPI_prepare 後面跟著 SPI_execute_plan 來獲得相似的結果;但是,當使用這個函數時,查詢計劃總是為提供的特定參數值進行自定義。對於一次性的查詢執行,應該優先使用這個函數。如果相同的命令需要用許多不同的參數來執行,那麼這兩種方法可能更快,取決於重新計劃的成本與自定義計劃的好處。

引數

const char * command

命令字串

int nargs

輸入參數的數量 ($1, $2, 等等)

Oid * argtypes

長度為 nargs 的陣列,包含參數的OID資料類型

Datum * values

長度為 nargs 的陣列,包含實際的參數值

const char * nulls

長度為 nargs 的陣列,描述哪些參數為空值

如果 nullsNULL,那麼 SPI_execute_with_args 假設沒有參數為空值。否則,nulls 陣列的每個條目應該是 ' ',如果相應的參數值為非空值,或者 'n',如果相應的參數值為空值。(在後一種情況下,相應的 values 條目中的實際值無關緊要。)請注意,nulls 不是文字字串,只是一個陣列:它不需要 '\0' 終止符。

bool read_only

對於唯讀執行的 true

long count

要返回的最大行數,如果沒有限制則為 0

傳回值

傳回值與 SPI_execute 的相同。

如果成功,SPI_processedSPI_tuptable 的設定方式與 SPI_execute 相同。

提交更正

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