PostgreSQL SPI_cursor_open

2021-09-06 10:54 更新

SPI_cursor_open — 使用由SPI_prepare創(chuàng)建的 語(yǔ)句建立一個(gè)游標(biāo)

大綱

Portal SPI_cursor_open(const char * name, SPIPlanPtr plan,
                       Datum * values, const char * nulls,
                       bool read_only)

描述

SPI_cursor_open建立一個(gè)游標(biāo)(在內(nèi)部是一個(gè) portal),該游標(biāo)將執(zhí)行由SPI_prepare準(zhǔn)備好 的一個(gè)語(yǔ)句。參數(shù)具有和SPI_execute_plan的 相應(yīng)參數(shù)相同的含義。

使用一個(gè)游標(biāo)而不是直接執(zhí)行該語(yǔ)句有兩個(gè)好處。首先,可以一次只取出 一些結(jié)果行,避免為返回很多行的查詢過度使用內(nèi)存。其次,一個(gè) portal 可以比當(dāng)前的C函數(shù)生存更長(zhǎng)時(shí)間(事實(shí)上,它可以生存到當(dāng)前事務(wù)結(jié)束)。 把 portal 的名稱返回給該C函數(shù)的調(diào)用者提供了一種將一個(gè)行集合返回為結(jié) 果的方法。

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

參數(shù)

const char * name

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

SPIPlanPtr plan

預(yù)備語(yǔ)句(由SPI_prepare返回)

Datum * values

實(shí)際參數(shù)值的數(shù)組。長(zhǎng)度必須等于該語(yǔ)句的參數(shù)數(shù)量。

const char * nulls

描述哪些參數(shù)是空值的數(shù)據(jù)。長(zhǎng)度必須等于該語(yǔ)句的參數(shù)數(shù)量。

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

bool read_only

true表示只讀執(zhí)行

返回值

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

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)