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
描述哪些參數為空的陣列。必須與語句的引數數量相同。
如果 nulls
為 NULL
,則 SPI_cursor_open
假設沒有參數為空。否則,nulls
陣列的每個條目應該是 ' '
(如果相應的參數值不為空),或是 'n'
(如果相應的參數值為空)。(在後一種情況下,相應 values
條目中的實際值並不重要。)請注意,nulls
不是文字字串,只是一個陣列:它不需要 '\0'
終止符。
bool read_only
對於唯讀執行的 true
指向包含游標的 portal 的指標。請注意,沒有錯誤返回約定;任何錯誤都會通過 elog
報告。
如果您在文件中發現任何不正確、與您使用特定功能的體驗不符或需要進一步說明的內容,請使用此表格來報告文件問題。