2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 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

描述哪些引數為 NULL 的陣列。長度必須與語句的引數數量相同。

如果 nullsNULL,則 SPI_cursor_open 假定沒有引數為 NULL。否則,nulls 陣列的每個條目如果對應的引數值非 NULL,則應為 ' ',如果對應的引數值為 NULL,則應為 'n'。(後一種情況,values 中對應條目的實際值無關緊要。)請注意,nulls 不是一個文字字串,而只是一個數組:它不需要 '\0' 終止符。

bool read_only

只讀執行時為 true

返回值

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

提交更正

如果您在文件中看到任何不正確的內容,與您在使用特定功能時的體驗不符,或者需要進一步澄清,請使用 此表單 報告文件問題。