SPI_execute_with_args — 執行帶有外部參數的命令
int SPI_execute_with_args(const char *command
, intnargs
, Oid *argtypes
, Datum *values
, const char *nulls
, boolread_only
, longcount
)
SPI_execute_with_args
執行一個可能包含對外部提供參數的引用的命令。 命令文本將參數表示為 $
,並且呼叫指定每個此類符號的資料類型和值。n
read_only
和 count
的解釋與 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
的陣列,描述哪些參數為空值
如果 nulls
是 NULL
,那麼 SPI_execute_with_args
假設沒有參數為空值。否則,nulls
陣列的每個條目應該是 ' '
,如果相應的參數值為非空值,或者 'n'
,如果相應的參數值為空值。(在後一種情況下,相應的 values
條目中的實際值無關緊要。)請注意,nulls
不是文字字串,只是一個陣列:它不需要 '\0'
終止符。
bool read_only
對於唯讀執行的 true
long count
要返回的最大行數,如果沒有限制則為 0
傳回值與 SPI_execute
的相同。
如果成功,SPI_processed
和 SPI_tuptable
的設定方式與 SPI_execute
相同。
如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的內容,請使用此表單來報告文件問題。