SPI_cursor_open_with_args#
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
.
Если одна и та же команда должна быть выполнена с разными параметрами,
то в зависимости от стоимости повторного планирования и выгоды от
пользовательских планов, может быть быстрее использовать любой из этих методов.
Входные данные параметра будут скопированы в портал курсора, поэтому их можно освободить, пока курсор все еще существует.
Эта функция теперь устарела в пользу SPI_cursor_parse_open
, которая предоставляет эквивалентную функциональность с использованием более современного API для обработки параметров запроса.
Аргументы
const char *
name
имя портала или
NULL
для того, чтобы система выбрала имяconst char *
command
строка команды
int
nargs
количество входных параметров (
$1
,$2
, и т. д.)Oid *
argtypes
массив длиной
nargs
, содержащий OIDы типов данных параметровDatum *
values
массив длиной
nargs
, содержащий фактические значения параметровconst char *
nulls
массив длиной
nargs
, описывающий, какие параметры являются нулевымиЕсли параметр
nulls
равенNULL
, то функцияSPI_cursor_open_with_args
предполагает, что ни один из параметров не является NULL. В противном случае, каждый элемент массиваnulls
должен быть равен' '
, если соответствующее значение параметра не является NULL, или'n'
, если соответствующее значение параметра является NULL. (В последнем случае фактическое значение в соответствующей записиvalues
не имеет значения). Обратите внимание, чтоnulls
не является текстовой строкой, а только массивом: он не требует завершающего символа'\0'
.bool
read_only
true
для выполнения только для чтенияint
cursorOptions
целочисленная битовая маска параметров курсора; ноль приводит к использованию поведения по умолчанию
Возвращаемое значение
Указатель на портал, содержащий курсор. Обратите внимание, что здесь нет соглашения о возврате ошибки; любая ошибка будет сообщена через функцию elog
.