Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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 开始)

项目 * values

长度为 ncols 的数组,包含指定列的新值

const char * nulls

长度为 ncols 的数组,说明新值为 null 的内容

如果 nullsNULL,则 SPI_modifytuple 假设没有新值为 null。否则,如果相应的 New Value 非 null,则 nulls 数组的每个条目应为 ' ';如果相应的 New Value 为 null,则应为 'n'。(在后一种情况下,相应的 values 条目中的实际值不重要。)请注意,nulls 不是文本字符串,而只是一个数组:它不需要 '\0' 终止符。

返回值

已修改的新行,分配于上层执行程序上下文中,或错误时的 NULL(有关错误指示,请参见 SPI_result

出错时,SPI_result 的设置如下:

SPI_ERROR_ARGUMENT

如果 relNULL,或如果 rowNULL,或如果 ncols小于或等于 0,或如果 colnumNULL,或如果 valuesNULL

SPI_ERROR_NOATTRIBUTE

如果 colnum 包含无效的列编号(小于或等于 0,或大于 row 中的列数)

SPI_ERROR_UNCONNECTED

如果 SPI 未处于活动状态