登录
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
。
参数
关系
rel
仅用作行的行描述符的源。(传递关系而不是行描述符是一个错误功能。)
堆元组
row
要修改的行
int
ncols
要更改的列数
int *
colnum
长度为
ncols
的数组,包含要更改的列的编号(列编号从 1 开始)Datum *
values
长度为
ncols
的数组,包含指定列的新值const char *
nulls
长度为
ncols
的数组,描述哪些新值为空如果
nulls
为NULL
,则SPI_modifytuple
假设没有新值为空。否则,如果相应的新值不为空,则nulls
数组的每个条目应为' '
;如果相应的新值为 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 未激活