# 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 未激活