Функции и процедуры
В системе предусмотрена возможность создания и использования пользовательских SQL-функций и процедур, позволяющих реализовывать сложную логику обработки данных или выполнение побочных действий.
При выборе пункта пользовательского меню «Функции и процедуры» открывается окно, в котором представлен список всех функций и процедур текущего проекта. При нажатии на код существующей функции/процедуры отображается подробная информация по данному элементу.

Информация о выбранном элементе включает в себя:
- Код - имя, уникально в пределах схемы и том же наборе аргументов вызова;
- Результат вызова (только для функции);
- Тип - функция/процедура;
- Уровень привилегий- исполнитель/создатель;
- Код карты - имя схемы;
- Определение -
SQL-выражение.
В правом верхнем углу находится выпадающий список, с помощью которого возможно отфильтровать список элементов по принадлежности к выбранной карте (схеме).
При нажатии на кнопку открывается функциональное окно, где представлена SQL-консоль и раскрывающийся список для подстановки шаблона создания.

Для выбора доступны следующие шаблоны:
- Функция SQL;
- Функция PL/pgSQL;
- Процедура SQL;
- Процедура PL/pgSQL.
Результат вызова функции всегда возвращается в виде списка объектов, процедуры могут использоваться для выполнения действий без возврата данных, но их результат нельзя напрямую использовать как источник данных.
SQL — это декларативный язык запросов, предназначенный для простых запросов и манипуляций данными, PL/pgSQL — это процедурное расширение SQL, полезное для написания сложной логики внутри базы данных, когда одного SQL недостаточно.
Функции и процедуры могут располагаться в любых схемах (картах), по умолчанию они создаются в схеме public, переопределить расположение можно вручную в SQL-консоли.
Уровень привелегий определяет, от чьего имени и с какими правами будет выполняться SQL-код функции или процедуры:
- Привилегии создателя (
definer) позволяют обращаться к таблицам и объектам, к которым у текущего пользователя нет прямого доступа, но доступ есть у владельца проекта, и гарантируют стабильность работы логики, независимо от прав вызывающего пользователя; - Привелении исполнитель (
invoker) означают, что если у пользователя нет прав на чтение или запись нужной таблицы — выполнение завершится ошибкой, результат или поведение функции может различаться в зависимости от прав вызывающего.
Все пользовательские функции и процедуры, созданные в рамках проекта, автоматически привязываются к владельцу проекта. Все создаваемые функции по умолчанию доступны на исполнение всем пользователям, возможность вызова ограничивается правом доступа к карте/схеме, в которой располагается функция.
public не могут быть ограничены на вызов.
Кнопка предназначена для автоматического приведения написанного SQL-запроса к стандартизированному виду. При нажатии на неё система расставляет отступы и переносы строк в соответствии с иерархией конструкций, выравнивает ключевые слова, имена таблиц и полей, упрощает восприятие сложных запросов.
Допускается внесение изменений в созданные ранее функции и процедуры. Для этого необходимо в контекстном меню нужно экземпляра нажать на кнопку . Разрешается редактирование кода функции/процедуры, привелегий ее выполнения и кода карты (схемы-источника).

Для удаления функции/процедуры необходимо правой кнопкой мыши вызвать ее контекстное меню и выбрать пункт .