SPI_modifytuple — 通过替换给定行的选定字段来创建行
HeapTuple SPI_modifytuple(Relationrel, HeapTuplerow, intncols, int *colnum, Datum *values, const char *nulls)
SPI_modifytuple 通过为选定列替换新值,并在其他位置复制原始行的列来创建新行。输入行不会被修改。新行在上层执行器上下文中返回。
此函数只能在连接到 SPI 时使用。否则,它将返回 NULL 并将 SPI_result 设置为 SPI_ERROR_UNCONNECTED。
Relation rel仅用作行描述符的源。(传递关系而不是行描述符是一个错误。)
HeapTuple row要修改的行
int ncols要更改的列数
int * colnum长度为 ncols 的数组,其中包含要更改的列的编号(列号从 1 开始)
Datum * values长度为 ncols 的数组,其中包含指定列的新值
const char * nulls长度为 ncols 的数组,描述哪些新值为空
如果 nulls 为 NULL,则 SPI_modifytuple 假定没有新值为空。否则,nulls 数组的每个条目如果对应的新值不为空,则应为 ' ';如果对应的新值为空,则应为 'n'。(在后一种情况下,对应的 values 条目中的实际值无关紧要。)请注意,nulls 不是文本字符串,而只是一个数组:它不需要 '\0' 终止符。
具有修改的新行,在上层执行器上下文中分配,或者在错误时返回 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 未激活
如果您在文档中看到任何不正确、与您对特定功能的体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。