SPI_modifytuple
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, описывающий, в каких столбцах передаётся NULL- Если в - nullsпередаётся- NULL,- SPI_modifytupleсчитает, что ни один из параметров не равен NULL. В противном случае элемент массива- nullsдолжен содержать- ' ', если значение соответствующего параметра не NULL, либо- 'n', если это значение — NULL. (В последнем случае значение, переданное в соответствующем элементе- 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 неактивен