PL/Scheme
PL/Scheme[1] - это процедурный обработчик языка PostgreSQL для языка программирования Scheme, выпущенного под лицензией BSD. PL/Scheme использует Guile в качестве своего интерпретатора Scheme. При наличии множества встроенных SRFI, структуры GOOPS и полного соответствия R5RS Guile. Вы можете найти некоторые из поддерживаемых функций PL/Scheme в приведенном ниже списке.
Работа с языком[править]
Список поддерживаемых функций[править]
- Расширяемая поддержка нативного типа даже для еще не созданных типов данных SQL. Поддерживаются также домен, комплекс (т. е. Таблица) и псевдо (запись) типы.
- [Вложенные] записи и типы строк поддерживаются как при возвращении типа записи, так и в качестве аргумента процедуры.
- SPI функциональность и поддержка триггеров.
- Кэширование для энергонезависимых (и не-SRF) процедур для каждой [top] транзакции.
- Глобальная поддержка общих переменных.
- Поддержка как надежных, так и ненадежных режимов PL.
- И любая доступная функция, поддерживаемая Guile (полностью совместимость с R5RS, расширение системной системы, полный доступ к системным вызовам POSIX, поддержка сетей, несколько потоков, динамическая компоновка, интерфейс вызова внешних функций, мощная обработка строк, структура GOOPS, множество встроенных SRFI и могут Другие), естественно, также поставляются с PL/Scheme.
Пример написания функции на PL/Scheme[править]
CREATE FUNCTION scm_pow(u int, v int) RETURNS int AS ' (let loop ((v v)) (if (< v 1) 1 (* u (loop (- v 1)))))' LANGUAGE plscheme; test=# SELECT * FROM scm_pow(2, 5); scm_pow
Некоторые функции и символы[править]
spi-execute command [count]
Выполняет указанную команду SQL. Если count равно нулю (или не указан как опция), то команда выполняется для всех строк, к которым она применяется. Если count больше 0, тогда количество строк, для которых будет выполнена команда, ограничено (так же, как в предложении LIMIT). Функция возвращает ассоциативный массив с ключами status, affected-tuples и returns-tuples. При успешном завершении статус будет указывать на один из следующих символов:
spi-ok-select
spi-ok-select-into
spi-ok-delete
spi-ok-delete-returning
spi-ok-insert
spi-ok-insert-returning
spi-ok-update
spi-ok-update-returning
spi-ok-utility
spi-prepare command type
Возвращает план выполнения команды в типе spi-plan (который может быть передан в подготовленный по команде spi-execute позже) по указанным аргументам. Type - это тип указывающих вектор-типов (в строковом формате), используемых в команде.
spi-execute-prepared plan args [count]
Выполняет указанный план (в типе spi-plan, который возвращается из функции spi-prepare) с заданным вектором args. Функция возвращает ассоциативный массив, как и в spi-execute, и работает так же.
report level message [hint]
Функция сообщает об ошибке/исключении с указанным сообщением (и, возможно, подсказкой). Уровень отчета может быть одной из следующих переменных:
debug-level
log-level
info-level
notice-level
warning-level
exception-level
Источники[править]
- ↑ http://plscheme.projects.pgfoundry.org/. Архивировано из первоисточника 24 апреля 2017.[недоступная ссылка] Проверено 7 мая 2017.