# SPI_修改元组
SPI_modifytuple — 通过替换给定行的选定字段来创建行
# 概要
HeapTuple SPI_modifytuple(Relation rel, HeapTuple row, int ncols,
int * colnum, Datum * values, const char * nulls)
# 描述
SPI_modifytuple
通过为选定列替换新值来创建新行,并在其他位置复制原始行的列。输入行未修改。新行在上层执行器上下文中返回。
此功能只能在连接到 SPI 时使用。否则,它返回 NULL 并设置SPI_结果
到SPI_ERROR_UNCONNECTED
.
# 论据
关系 *
相对*
仅用作行的行描述符的源。(传递关系而不是行描述符是错误的。)
堆元组 *
排*
要修改的行
整数 *
ncols*
要更改的列数
整数 * *
柱状图*
长度数组*ncols
*,包含要更改的列号(列号从 1 开始)
基准 * *
价值观*
长度数组*ncols
*,包含指定列的新值
常量字符 * *
空值*
长度数组*ncols
*,描述哪些新值是空的
如果*空值
是空值
然后SPI_modifytuple
假定没有新值为空。否则,每个条目空值
数组应该是' '
如果相应的新值不为空,或者'n'
如果相应的新值为空。(在后一种情况下,对应的实际值价值观
输入无关紧要。)请注意空值
*不是文本字符串,只是一个数组:它不需要'\0'
终结者。
# 返回值
带有修改的新行,在上层执行程序上下文中分配,或者空值
出错时(见SPI_结果
用于错误指示)
出错时,SPI_结果
设置如下:
SPI_ERROR_ARGUMENT
如果*相对
是空值
, 或者如果排
是空值
, 或者如果ncols
小于或等于 0,或者如果柱状图
是空值
, 或者如果价值观
*是空值
.
SPI_ERROR_NOATTRIBUTE
如果*柱状图
包含无效的列号(小于或等于 0 或大于排
*)
SPI_ERROR_UNCONNECTED
如果 SPI 未激活