SPI_modifytuple — 透過替換給定行的選定欄位來建立新行
HeapTuple SPI_modifytuple(Relationrel
, HeapTuplerow
, intncols
, 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
如果 nulls
為 NULL
,則 SPI_modifytuple
假定沒有新值是 NULL。否則,nulls
陣列的每個條目在對應的 values
條目非 NULL 時應為 ' '
,在對應的 values
條目為 NULL 時應為 'n'
。(後一種情況,對應的 values
條目中的實際值無關緊要。)請注意,nulls
不是一個文字字串,而只是一個數組:它不需要 '\0'
終止符。
修改後的新行,分配在上層執行器上下文中,或在出錯時為 NULL
(有關錯誤指示,請參閱 SPI_result
)
出錯時,SPI_result
的設定如下:
SPI_ERROR_ARGUMENT
如果 rel
為 NULL
,或者 row
為 NULL
,或者 ncols
小於或等於 0,或者 colnum
為 NULL
,或者 values
為 NULL
。
SPI_ERROR_NOATTRIBUTE
如果 colnum
包含無效的列編號(小於或等於 0 或大於 row
中的列數)
SPI_ERROR_UNCONNECTED
如果 SPI 未啟用
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步說明之處,請使用 此表單 報告文件問題。