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 未激活
如果您在文档中发现任何不正确、与您对特定功能的体验不符或需要进一步说明之处,请使用 此表单 报告文档问题。