PostgreSQL SPI_cursor_open_with_args

2021-09-06 10:54 更新

SPI_cursor_open_with_args — 使用一個(gè)查詢和參數(shù)建立一個(gè)游標(biāo)

大綱

Portal SPI_cursor_open_with_args(const char *name,
                                 const char *command,
                                 int nargs, Oid *argtypes,
                                 Datum *values, const char *nulls,
                                 bool read_only, int cursorOptions)

描述

SPI_cursor_open_with_args建立一個(gè)將 執(zhí)行指定查詢的游標(biāo)(在內(nèi)部是一個(gè) portal)。大部分參數(shù)具有和 SPI_prepare_cursorSPI_cursor_open中相應(yīng)參數(shù)相同的含 義。

對(duì)于一次性的查詢執(zhí)行,這個(gè)函數(shù)應(yīng)該比 SPI_prepare_cursor加上其后的 SPI_cursor_open更好。如果相同的命令 要被用很多不同的參數(shù)執(zhí)行,哪種方法更快就要取決于重做計(jì)劃的 代價(jià)與定制計(jì)劃帶來(lái)的好處之間誰(shuí)更有利。

被傳入的參數(shù)數(shù)據(jù)將被復(fù)制到游標(biāo)的 portal 中,因此在該游標(biāo)仍然存在時(shí) 可以釋放掉被傳入的參數(shù)數(shù)據(jù)。

參數(shù)

const char * name

portal 的名字,或者設(shè)置成NULL 讓系統(tǒng)選擇一個(gè)名稱

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ù)為空值

如果nullsNULL, 那么SPI_cursor_open_with_args會(huì)假設(shè)沒(méi)有參數(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)中的值沒(méi)有 關(guān)系)。注意nulls不是一個(gè)文本字符串, 它只是一個(gè)數(shù)組:它不需要一個(gè)'\0'終止符。

bool read_only

true表示只讀執(zhí)行

int cursorOptions

游標(biāo)選項(xiàng)的整數(shù)型位掩碼,為零會(huì)產(chǎn)生默認(rèn)行為

返回值

指向包含該游標(biāo)的 portal 的指針。注意這里沒(méi)有錯(cuò)誤返回約定, 任何錯(cuò)誤都將通過(guò)elog報(bào)告。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)