支援的版本:目前 (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 透過替換選定欄位的新值,並複製原始列在其他位置的欄位,來建立一個新的列。輸入列不會被修改。新的列會在上面的執行器上下文 (upper executor context) 中傳回。

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

引數

Relation rel

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

HeapTuple row

要修改的列

int ncols

要變更的欄位數量

int * colnum

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

Datum * values

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

const char * nulls

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

如果 nullsNULL,則 SPI_modifytuple 假設沒有新值為空值。否則,nulls 陣列的每個條目應該是 ' '(如果對應的新值不是空值),或是 'n'(如果對應的新值是空值)。(在後一種情況下,對應的 values 條目中的實際值並不重要。)請注意,nulls 不是文字字串,而只是一個陣列:它不需要 '\0' 終止符。

傳回值

具有修改的新列,配置在上面的執行器上下文 (upper executor context) 中,如果發生錯誤則為 NULL(有關錯誤指示,請參閱 SPI_result

發生錯誤時,SPI_result 會設定如下

SPI_ERROR_ARGUMENT

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

SPI_ERROR_NOATTRIBUTE

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

SPI_ERROR_UNCONNECTED

如果 SPI 未啟用

提交更正

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