PostgreSQL SPI_modifytuple

2021-09-06 10:58 更新

SPI_modifytuple — 通過替換一個給定行的選定域來創(chuàng)建一行

大綱

HeapTuple SPI_modifytuple(Relation rel, HeapTuple row, int ncols,
                          int * colnum, Datum * values, const char * nulls)

描述

SPI_modifytuple創(chuàng)建一個新行,其中選定的列 用新值替代,其他列則從輸入行中拷貝。輸入行本身不被修改。新行被返回在上層的執(zhí)行器上下文中。

這個函數(shù)只能在連接到SPI時使用。否則,它會返回NULL并且把SPI_result設(shè)置為SPI_ERROR_UNCONNECTED。

參數(shù)

Relation rel

只被用作該行的行描述符的來源(傳遞一個關(guān)系而不是 一個行描述符是一種令人頭痛的設(shè)計)。

HeapTuple row

要被修改的行

int ncols

要被修改的列數(shù)

int * colnum

一個長度為ncols的數(shù)組,包含了要被修改的列號 (列號從 1 開始)

Datum * values

一個長度為ncols的數(shù)組,包含了指定列的新值

const char * nulls

一個長度為ncols的數(shù)組,描述哪些新值為空值

如果nullsNULL,那么 SPI_modifytuple假定沒有新值為空值。否則, 如果對應(yīng)的新值為非空,nulls數(shù)組的每一項都應(yīng) 該是' ',而如果對應(yīng)的新值為空值則為 'n'(在 后一種情況中,對應(yīng)的values項中的新值無關(guān)緊 要)。注意nulls不是一個文本字符串,只是一個 數(shù)組:它不需要一個'\0'終止符。

返回值

修改過的新行,它被分配在上層的執(zhí)行器上下文中,或者在出錯時返回NULL(錯誤的內(nèi)容請參考SPI_result

出錯時,SPI_result被設(shè)置如下:

SPI_ERROR_ARGUMENT

如果relNULL,或者 rowNULL,或者ncols 小于等于 0,或者colnumNULL, 或者valuesNULL。

SPI_ERROR_NOATTRIBUTE

如果colnum包含一個無效的列號(小于等于 0 或者大于 row中的列數(shù))。

SPI_ERROR_UNCONNECTED

如果SPI不是活躍狀態(tài)

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號