SPI_modifytuple — 藉由替換給定列的選定欄位來建立列
HeapTuple SPI_modifytuple(Relationrel
, HeapTuplerow
, intncols
, 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
的陣列,描述哪些新值為空值
如果 nulls
為 NULL
,則 SPI_modifytuple
假設沒有新值為空值。否則,nulls
陣列的每個條目應該是 ' '
(如果對應的新值不是空值),或是 'n'
(如果對應的新值是空值)。(在後一種情況下,對應的 values
條目中的實際值並不重要。)請注意,nulls
不是文字字串,而只是一個陣列:它不需要 '\0'
終止符。
具有修改的新列,配置在上面的執行器上下文 (upper executor context) 中,如果發生錯誤則為 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 未啟用
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。