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_modifytuple

SPI_modifytuple — 透過替換給定行的選定欄位來建立新行

概要

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

描述

SPI_modifytuple 透過替換選定列的新值並複製原始行中其他位置的列來建立一個新行。原始行不會被修改。新行將在上層執行器上下文中返回。

此函式只能在連線到 SPI 時使用。否則,它將返回 NULL 並將 SPI_result 設定為 SPI_ERROR_UNCONNECTED

引數

Relation rel

僅用作行的行描述符的來源。(傳遞關係而不是行描述符是一個錯誤的功能。)

HeapTuple row

要修改的行

int ncols

要更改的列數

int * colnum

長度為 ncols 的陣列,包含要更改的列的編號(列編號從 1 開始)

Datum * values

長度為 ncols 的陣列,包含指定列的新值

const char * nulls

長度為 ncols 的陣列,描述哪些新值是 NULL

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

返回值

修改後的新行,分配在上層執行器上下文中,或在出錯時為 NULL(有關錯誤指示,請參閱 SPI_result

出錯時,SPI_result 的設定如下:

SPI_ERROR_ARGUMENT

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

SPI_ERROR_NOATTRIBUTE

如果 colnum 包含無效的列編號(小於或等於 0 或大於 row 中的列數)

SPI_ERROR_UNCONNECTED

如果 SPI 未啟用

提交更正

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