SPI_cursor_open_with_args
SPI_cursor_open_with_args — открывает курсор для запроса с параметрами
Синтаксис
Portal SPI_cursor_open_with_args(const char *name, const char *command, intnargs, Oid *argtypes, Datum *values, const char *nulls, boolread_only, intcursorOptions)
Описание
SPI_cursor_open_with_args открывает курсор (внутри называемый порталом) для выполнения заданного запроса. Большинство параметров имеют тот же смысл, что и соответствующие параметры функций SPI_prepare_cursor и SPI_cursor_open.
Для разового выполнения запроса эту функцию следует предпочесть SPI_prepare_cursor с последующей SPI_cursor_open. Если же одна и та же команда должна выполняться с самыми разными параметрами, какой вариант окажется быстрее, будет зависеть от стоимости повторного планирования и выигрыша от выбора специализированных планов.
Переданные значения параметров копируются в портал курсора, так что их можно освободить и во время существования курсора.
Аргументы
- const char *- name
- имя портала, либо - NULL, чтобы имя выбрала система
- const char *- command
- строка команды 
- int- nargs
- число входных параметров ( - $1,- $2и т. д.)
- Oid *- argtypes
- массив размера - nargs, содержащий OID типов параметров
- Datum *- values
- массив размера - nargs, содержащий фактические значения параметров
- const char *- nulls
- массив размера - nargs, описывающий, в каких параметрах передаётся NULL- Если в - nullsпередаётся- NULL,- SPI_cursor_open_with_argsсчитает, что ни один из параметров не равен NULL. В противном случае элемент массива- nullsдолжен содержать- ' ', если значение соответствующего параметра не NULL, либо- 'n', если это значение — NULL. (В последнем случае значение, переданное в соответствующем элементе- values, не учитывается.) Заметьте, что- nulls— это не текстовая строка, а просто массив: ноль (- '\0') в конце не нужен.
- bool- read_only
- trueдля режима выполнения «только чтение»
- int- cursorOptions
- битовая маска параметров курсора; 0 выбирает поведение по умолчанию 
Возвращаемое значение
Указатель на портал, содержащий курсор. Заметьте, что соглашение о возврате ошибок отсутствует; все ошибки выдаются через elog.