On this page
SPI_modifytuple
SPI_modifytuple —通过替换给定行的选定字段来创建行
Synopsis
HeapTuple SPI_modifytuple(Relation rel, HeapTuple row, int ncols,
int * colnum, Datum * values, const char * nulls)
Description
SPI_modifytuple
通过替换选定列的新值来创建新行,并将原始行的列复制到其他位置。Importing 行未修改。在上级执行程序上下文中返回新行。
仅当连接到 SPI 时才能使用此功能。否则,它返回 NULL 并将SPI_result
设置为SPI_ERROR_UNCONNECTED
。
Arguments
Relation rel
- 仅用作该行的行 Descriptors 的源。 (传递一个关系而不是一个行 Descriptors 是错误的.)
HeapTuple row
- 要修改的行
int ncols
- 要更改的列数
int * colnum
- 长度*
ncols
*的数组,包含要更改的列号(列号从 1 开始)
- 长度*
Datum * values
- 长度*
ncols
*的数组,其中包含指定列的新值
- 长度*
const char * nulls
- 长度*
ncols
*的数组,描述哪些新值为 null
- 长度*
如果* nulls
为NULL
,则SPI_modifytuple
假定没有新值为空。否则, nulls
数组的每个条目如果对应的新值不为空,则应为' '
;如果对应的新值为空,则应为'n'
。 (在后一种情况下,相应的 values
条目中的实际值无关紧要.)请注意, nulls
*不是文本字符串,而只是数组:它不需要'\0'
终止符。
Return Value
带有修改的新行,在上级执行者上下文中分配,或在错误时返回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 未激活