支援的版本:目前版本 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4

SPI_cursor_open

SPI_cursor_open — 使用 SPI_prepare 建立的語句來設定游標

概要

Portal SPI_cursor_open(const char * name, SPIPlanPtr plan,
                       Datum * values, const char * nulls,
                       bool read_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

描述哪些參數為空的陣列。必須與語句的引數數量相同。

如果 nullsNULL,則 SPI_cursor_open 假設沒有參數為空。否則,nulls 陣列的每個條目應該是 ' '(如果相應的參數值不為空),或是 'n'(如果相應的參數值為空)。(在後一種情況下,相應 values 條目中的實際值並不重要。)請注意,nulls 不是文字字串,只是一個陣列:它不需要 '\0' 終止符。

bool read_only

對於唯讀執行的 true

傳回值

指向包含游標的 portal 的指標。請注意,沒有錯誤返回約定;任何錯誤都會通過 elog 報告。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的體驗不符或需要進一步說明的內容,請使用此表格來報告文件問題。