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

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

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

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

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

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

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

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

Глава 5.10. Интерфейс программирования сервера

Содержание

5.10.1. Функции интерфейса
5.10.1.1. SPI_connect — подключить функцию на языке C к менеджеру SPI
5.10.1.2. SPI_finish — отключить функцию на языке C от менеджера SPI
5.10.1.3. SPI_execute — выполнить команду
5.10.1.4. SPI_exec — выполнить команду чтения/записи
5.10.1.5. SPI_execute_extended — выполнить команду с внешними параметрами
5.10.1.6. SPI_execute_with_args — выполнить команду с внешними параметрами
5.10.1.7. SPI_prepare — подготовить выражение без его немедленного выполнения
5.10.1.8. SPI_prepare_cursor — подготовить выражение без его немедленного выполнения
5.10.1.9. SPI_prepare_extended — подготовить выражение без его немедленного выполнения
5.10.1.10. SPI_prepare_params — подготовить выражение без его немедленного выполнения
5.10.1.11. SPI_getargcount — возвращает количество аргументов, необходимых для оператора, подготовленного функцией SPI_prepare
5.10.1.12. SPI_getargtypeid — возвращает OID типа данных для аргумента выражения, подготовленного функцией SPI_prepare
5.10.1.13. SPI_is_cursor_plan — возвращает true если оператор, подготовленный SPI_prepare может использоваться с SPI_cursor_open
5.10.1.14. SPI_execute_plan — выполнить оператор, подготовленный функцией SPI_prepare
5.10.1.15. SPI_execute_plan_extended — выполнить оператор, подготовленный функцией SPI_prepare
5.10.1.16. SPI_execute_plan_with_paramlist — выполнить оператор, подготовленный функцией SPI_prepare
5.10.1.17. SPI_execp — выполнить оператор в режиме чтения/записи
5.10.1.18. SPI_cursor_open — создать курсор с помощью оператора, подготовленного с помощью SPI_prepare
5.10.1.19. SPI_cursor_open_with_args — создать курсор, используя запрос и параметры
5.10.1.20. SPI_cursor_open_with_paramlist — создать курсор, используя параметры
5.10.1.21. SPI_cursor_parse_open — создаёт курсор, используя строку запроса и параметры
5.10.1.22. SPI_cursor_find — поиск существующего курсора по имени
5.10.1.23. SPI_cursor_fetch — выбрать несколько строк из курсора
5.10.1.24. SPI_cursor_move — переместить курсор
5.10.1.25. SPI_scroll_cursor_fetch — выбрать несколько строк из курсора
5.10.1.26. SPI_scroll_cursor_move — переместить курсор
5.10.1.27. SPI_cursor_close — закрытие курсора
5.10.1.28. SPI_keepplan — сохранить подготовленное выражение
5.10.1.29. SPI_saveplan — сохранить подготовленное выражение
5.10.1.30. SPI_register_relation — сделать эфемерное именованное отношение доступным по имени в запросах SPI
5.10.1.31. SPI_unregister_relation — удаление эфемерного именованного отношения из реестра
5.10.1.32. SPI_register_trigger_data — предоставление доступа к эфемерным данным триггера в запросах SPI
5.10.2. Вспомогательные функции интерфейса
5.10.2.1. SPI_fname — определяет имя столбца по заданному номеру столбца
5.10.2.2. SPI_fnumber — определяет номер столбца по заданному имени столбца
5.10.2.3. SPI_getvalue — возвращает строковое значение указанного столбца
5.10.2.4. SPI_getbinval — возвращает двоичное значение указанного столбца
5.10.2.5. SPI_gettype — возвращает имя типа данных указанного столбца
5.10.2.6. SPI_gettypeid — возвращает тип данных OID указанного столбца
5.10.2.7. SPI_getrelname — возвращает имя указанного отношения
5.10.2.8. SPI_getnspname — возвращает пространство имен указанного отношения
5.10.2.9. SPI_result_code_string — возвращает код ошибки в виде строки
5.10.3. Управление памятью
5.10.3.1. SPI_palloc — выделить память в вышестоящем контексте исполнителя
5.10.3.2. SPI_repalloc — перераспределить память в вышестоящем контексте исполнителя
5.10.3.3. SPI_pfree — освобождение памяти в верхнем контексте исполнителя
5.10.3.4. SPI_copytuple — создание копии строки в верхнем контексте исполнителя
5.10.3.5. SPI_returntuple — подготовка к возврату кортежа в виде Datum
5.10.3.6. SPI_modifytuple — создать строку путем замены выбранных полей в заданной строке
5.10.3.7. SPI_freetuple — освободить строку, выделенную в верхнем контексте исполнителя
5.10.3.8. SPI_freetuptable — освободить набор строк, созданный SPI_execute или аналогичной функцией
5.10.3.9. SPI_freeplan — освободить ранее сохраненное подготовленное выражение
5.10.4. Управление транзакциями
5.10.4.1. SPI_commit — зафиксировать текущую транзакцию
5.10.4.2. SPI_rollback — прервать текущую транзакцию
5.10.4.3. SPI_start_transaction — устаревшая функция
5.10.5. Видимость изменений данных
5.10.6. Примеры

Интерфейс Интерфейс программирования сервера (SPI) предоставляет разработчикам пользовательских C функций возможность выполнять SQL команды внутри своих функций или процедур. SPI представляет собой набор интерфейсных функций для упрощения доступа к парсеру, планировщику и исполнителю. SPI также выполняет некоторое управление памятью.

Примечание

Доступные процедурные языки предоставляют различные средства для выполнения SQL-команд из функций. Большинство этих средств основаны на SPI, поэтому данная документация может быть полезна и пользователям этих языков.

Обратите внимание: если команда, вызванная через SPI, завершается ошибкой, управление не будет возвращено в вашу функцию на языке C. Вместо этого транзакция или подтранзакция, в которой выполняется ваша функция на языке C, будет откачена. (Это может показаться неожиданным, учитывая, что для функций SPI в основном описаны соглашения о возврате ошибок. Однако эти соглашения применяются только к ошибкам, обнаруженным внутри самих функций SPI.) Можно восстановить управление после ошибки, создав собственную подтранзакцию для вызовов SPI, которые могут завершиться сбоем.

SPI функции возвращают неотрицательный результат в случае успешного завершения (либо в виде возвращаемого целочисленного значения, либо в глобальной переменной SPI_result, как описано ниже). В случае ошибки будет возвращен отрицательный результат или NULL will be returned.

Файлы исходного кода, использующие SPI, должны включать заголовочный файл executor/spi.h.

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

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