×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

5.10.1.15. SPI_execute_plan_extended

5.10.1.15. SPI_execute_plan_extended

SPI_execute_plan_extended — выполнить оператор, подготовленный функцией SPI_prepare

Синтаксис

int SPI_execute_plan_extended(SPIPlanPtr plan,
                              const SPIExecuteOptions * options)

Описание

SPI_execute_plan_extended выполняет оператор, подготовленный функцией SPI_prepare или одной из родственных ей функций. Данная функция эквивалентна SPI_execute_plan, за исключением того, что информация о значениях параметров, передаваемых запросу, представляется иначе, и могут быть переданы дополнительные параметры управления выполнением.

Значения параметров запроса представляются структурой ParamListInfo struct, что удобно для передачи значений, уже доступных в этом формате. Также могут использоваться динамические наборы параметров через функции-перехватчики, указанные в ParamListInfo.

Кроме того, вместо постоянного накопления результирующих кортежей в SPI_tuptable структуре, кортежи могут передаваться предоставленному вызывающей стороной объекту DestReceiver object по мере их генерации исполнителем. Это особенно полезно для запросов, которые могут возвращать много кортежей, так как данные могут обрабатываться «на лету», а не накапливаться в памяти.

Аргументы

SPIPlanPtr plan

подготовленное выражение (возвращаемое SPI_prepare)

const SPIExecuteOptions * options

структура, содержащая необязательные аргументы

Вызывающие функции должны всегда полностью обнулять options структуру, а затем заполнять те поля, которые необходимо установить. Это обеспечивает прямую совместимость кода, так как любые поля, которые будут добавлены в структуру в будущем, будут вести себя обратно совместимым образом, если они равны нулю. Текущие доступные options поля:

ParamListInfo params

структура данных, содержащая типы и значения параметров запроса; NULL, если они отсутствуют

bool read_only

true для выполнения в режиме «только чтение»

bool allow_nonatomic

true позволяет выполнять операторы CALL и DO неатомарно (но это поле игнорируется, если только SPI_OPT_NONATOMIC флаг в SPI_connect_ext)

bool must_return_tuples

если true, вызвать ошибку, если запрос не относится к типу запросов, возвращающих кортежи (это не запрещает ситуацию, когда возвращается ноль кортежей)

uint64 tcount

максимальное количество строк для возврата или 0 для отсутствия ограничений

DestReceiver * dest

DestReceiver объект, который будет принимать любые кортежи, возвращаемые запросом; если указано значение NULL, результирующие кортежи накапливаются в SPI_tuptable структуре, как в SPI_execute_plan

ResourceOwner owner

Владелец ресурса, который будет удерживать счетчик ссылок на план во время его выполнения. Если передано значение NULL, используется CurrentResourceOwner. Игнорируется для несохраненных планов, так как SPI не запрашивает для них счетчики ссылок.

Возвращаемое значение

Возвращаемое значение такое же, как и для SPI_execute_plan.

Когда options->dest имеет значение NULL, SPI_processed и SPI_tuptable устанавливаются так же, как в SPI_execute_plan. Когда options->dest не равно NULL, SPI_processed устанавливается в ноль, а SPI_tuptable устанавливается в NULL. Если требуется подсчёт кортежей, вызывающий DestReceiver объект должен его вычислить.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению