SPI_execute_plan
SPI_execute_plan — выполнить оператор, подготовленный функцией SPI_prepare
Синтаксис
int SPI_execute_plan(SPIPlanPtrplan, Datum *values, const char *nulls, boolread_only, longcount)
Описание
SPI_execute_plan выполняет оператор, подготовленный функцией SPI_prepare или родственными ей. Параметры read_only и count имеют тот же смысл, что и в SPI_execute.
Аргументы
SPIPlanPtrplanподготовленный оператор (возвращаемый функцией
SPI_prepare)Datum *valuesМассив фактических значений параметров. Его размер должен равняться числу аргументов оператора.
const char *nullsМассив, описывающий, в каких параметрах передаётся NULL. Должен иметь размер, равный числу аргументов оператора.
Если в
nullsпередаётсяNULL,SPI_execute_planсчитает, что ни один из параметров не равен NULL. В противном случае элемент массиваnullsдолжен содержать' ', если значение соответствующего параметра не NULL, либо'n', если это значение — NULL. (В последнем случае значение, переданное в соответствующем элементеvalues, не учитывается.) Заметьте, чтоnulls— это не текстовая строка, а просто массив: ноль ('\0') в конце не нужен.boolread_onlytrueдля режима выполнения «только чтение»longcountмаксимальное число строк, которое должно быть возвращено; с
0ограничения нет
Возвращаемое значение
Возвращаемые значения те же, что и у SPI_execute, со следующими дополнительными вариантами ошибок (отрицательных результатов):
SPI_ERROR_ARGUMENTЕсли
planневерный илиNULL, либоcountменьше 0SPI_ERROR_PARAMЕсли в
valuesпереданNULLиplanбыл подготовлен с другими параметрами
Переменные SPI_processed и SPI_tuptable устанавливаются как в SPI_execute, если вызов был успешным.
SPI_execute_plan
SPI_execute_plan — execute a statement prepared by SPI_prepare
Synopsis
int SPI_execute_plan(SPIPlanPtrplan, Datum *values, const char *nulls, boolread_only, longcount)
Description
SPI_execute_plan executes a statement prepared by SPI_prepare or one of its siblings. read_only and count have the same interpretation as in SPI_execute.
Arguments
SPIPlanPtrplanprepared statement (returned by
SPI_prepare)Datum *valuesAn array of actual parameter values. Must have same length as the statement's number of arguments.
const char *nullsAn array describing which parameters are null. Must have same length as the statement's number of arguments.
If
nullsisNULLthenSPI_execute_planassumes that no parameters are null. Otherwise, each entry of thenullsarray should be' 'if the corresponding parameter value is non-null, or'n'if the corresponding parameter value is null. (In the latter case, the actual value in the correspondingvaluesentry doesn't matter.) Note thatnullsis not a text string, just an array: it does not need a'\0'terminator.boolread_onlytruefor read-only executionlongcountmaximum number of rows to return, or
0for no limit
Return Value
The return value is the same as for SPI_execute, with the following additional possible error (negative) results:
SPI_ERROR_ARGUMENTif
planisNULLor invalid, orcountis less than 0SPI_ERROR_PARAMif
valuesisNULLandplanwas prepared with some parameters
SPI_processed and SPI_tuptable are set as in SPI_execute if successful.