SPI_cursor_open — 使用 SPI_prepare
建立的語句設定游標
Portal SPI_cursor_open(const char *name
, SPIPlanPtrplan
, Datum *values
, const char *nulls
, boolread_only
)
SPI_cursor_open
設定一個游標(內部稱為 portal),該游標將執行由 SPI_prepare
準備的語句。引數的含義與 SPI_execute_plan
的對應引數相同。
使用游標而不是直接執行語句有兩個好處。第一,結果行可以一次檢索幾行,從而避免了返回大量行的查詢的記憶體溢位。第二,portal 可以比當前的 C 函式存活更長時間(實際上,它可以存活到當前事務結束)。將 portal 名稱返回給 C 函式的呼叫者,提供了一種將行集作為結果返回的方式。
傳入的引數資料將被複制到遊標的 portal 中,因此可以在遊標仍然存在時釋放這些資料。
const char * name
portal 的名稱,如果為 NULL
,則由系統選擇名稱
SPIPlanPtr plan
已準備好的語句(由 SPI_prepare
返回)
Datum * values
實際引數值的陣列。長度必須與語句的引數數量相同。
const char * nulls
描述哪些引數為 NULL 的陣列。長度必須與語句的引數數量相同。
如果 nulls
為 NULL
,則 SPI_cursor_open
假定沒有引數為 NULL。否則,nulls
陣列的每個條目如果對應的引數值非 NULL,則應為 ' '
,如果對應的引數值為 NULL,則應為 'n'
。(後一種情況,values
中對應條目的實際值無關緊要。)請注意,nulls
不是一個文字字串,而只是一個數組:它不需要 '\0'
終止符。
bool read_only
只讀執行時為 true
指向包含遊標的 portal 的指標。請注意,沒有錯誤返回約定;任何錯誤都將透過 elog
報告。
如果您在文件中看到任何不正確的內容,與您在使用特定功能時的體驗不符,或者需要進一步澄清,請使用 此表單 報告文件問題。