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