SPI_cursor_parse_open — открывает курсор для строки запроса и набора параметров
Portal SPI_cursor_parse_open(const char *name, const char *command, const SPIParseOpenOptions *options)
SPI_cursor_parse_open открывает курсор (внутри называемый порталом) для выполнения заданного запроса. Эта функция действует подобно функции SPI_prepare_cursor с последующей SPI_cursor_open_with_paramlist, за исключением того, что ей для обработки всех ссылок на параметры в строке запроса передаётся объект ParamListInfo.
Для разового выполнения запроса эту функцию следует предпочесть SPI_prepare_cursor с последующей SPI_cursor_open_with_paramlist. Если же одна и та же команда должна выполняться с самыми разными параметрами, какой вариант окажется быстрее, будет зависеть от стоимости повторного планирования и выигрыша от выбора специализированных планов.
Как правило, в объекте options->params все параметры должны иметь пометку PARAM_FLAG_CONST, поскольку для запроса всегда используется одноразовый план.
Переданные значения параметров копируются в портал курсора, так что их можно освободить и во время существования курсора.
const char * nameимя портала, либо NULL, чтобы имя выбрала система
const char * commandстрока команды
const SPIParseOpenOptions * optionsструктура, содержащая необязательные аргументы
Структуру options всегда следует сначала полностью заполнять нулями, а затем уже задавать необходимые значения. Это гарантирует совместимость с будущими изменениями в коде: при добавлении в эту структуру любых новых полей нулевое значение будет определять старое поведение. Сейчас в options есть такие поля:
ParamListInfo paramsструктура данных, содержащая типы и значения параметров запроса; NULL, если их нет
int cursorOptionsбитовая маска параметров курсора; 0 выбирает поведение по умолчанию
bool read_onlytrue для режима выполнения «только чтение»
Указатель на портал, содержащий курсор. Заметьте, что соглашение о возврате ошибок отсутствует; все ошибки выдаются через elog.