W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
SPI_execute_with_args — 用線外參數(shù)執(zhí)行一個(gè)命令
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
執(zhí)行一個(gè)可能包括 對(duì)外部提供的參數(shù)引用的命令。命令文本用 $
引用一個(gè)參數(shù),并且調(diào)用 會(huì)為每一個(gè)這種符號(hào)指定數(shù)據(jù)類型和值。 n
read_only
和 count
的解釋與 SPI_execute
中相同。
相對(duì)于SPI_execute
,這個(gè)例程的主要優(yōu) 點(diǎn)是數(shù)據(jù)值可以被插入到命令中而無需冗長(zhǎng)的引用/轉(zhuǎn)義,并且因此 減少了 SQL 注入攻擊的風(fēng)險(xiǎn)。
可以通過在SPI_prepare
后面跟上 SPI_execute_plan
達(dá)到相似的結(jié)果。但是, 使用這個(gè)函數(shù)時(shí)查詢計(jì)劃總是被定制成提供的指定參數(shù)值。對(duì)于一次 性的查詢執(zhí)行,這個(gè)函數(shù)應(yīng)該更好。如果同樣的命令需要用很多不同 的參數(shù)執(zhí)行,兩種方法都可能會(huì)更快,這取決于重新做規(guī)劃的代價(jià)與 定制計(jì)劃帶來的好處之間的對(duì)比。
const char * command
命令字符串
int nargs
輸入?yún)?shù)的數(shù)量($1
、$2
等等)。
Oid * argtypes
一個(gè)長(zhǎng)度為nargs
的數(shù)組, 包含參數(shù)的數(shù)據(jù)類型的OID
Datum * values
一個(gè)長(zhǎng)度為nargs
的數(shù)組, 包含實(shí)際的參數(shù)值
const char * nulls
一個(gè)長(zhǎng)度為nargs
的數(shù)組, 描述哪些參數(shù)為空值
如果nulls
為NULL
, 那么SPI_execute_with_args
會(huì)假設(shè)沒有參數(shù) 為空值。否則,如果對(duì)應(yīng)的參數(shù)值為非空, nulls
數(shù)組的每一個(gè)項(xiàng)都應(yīng)該是' '
;如果對(duì)應(yīng)參數(shù)值為空,
nulls
數(shù)組的項(xiàng)應(yīng)為'n'
(在后 面的情況中,對(duì)應(yīng)的values
項(xiàng)中的值沒有 關(guān)系)。注意nulls
不是一個(gè)文本字符串, 它只是一個(gè)數(shù)組:它不需要一個(gè)'\0'
終止符。
bool read_only
對(duì)只讀執(zhí)行是true
long count
要返回的最大行數(shù),0
表示沒有限制
該返回值和SPI_execute
一樣。
如果成功SPI_execute
會(huì)設(shè)置 SPI_processed
和 SPI_tuptable
。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: