SPI_cursor_open_with_args#

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,
                                 int nargs, Oid *argtypes,
                                 Datum *values, const char *nulls,
                                 bool read_only, int cursorOptions)

Описание

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.