Перейти к содержанию

Функции и процедуры

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

Примечание: Данный пункт пользовательского меню для создания и изменения SQL-функций и процедур доступен только пользователям с правами на администрирование и осуществляется продвинутым специалистом или программистом.

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

Информация о выбранном элементе включает в себя:

  • Код - имя, уникально в пределах схемы и том же наборе аргументов вызова;
  • Результат вызова (только для функции);
  • Тип - функция/процедура;
  • Уровень привилегий- исполнитель/создатель;
  • Код карты - имя схемы;
  • Определение - SQL-выражение.

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

При нажатии на кнопку открывается функциональное окно, где представлена SQL-консоль и раскрывающийся список для подстановки шаблона создания.

Для выбора доступны следующие шаблоны:

  • Функция SQL;
  • Функция PL/pgSQL;
  • Процедура SQL;
  • Процедура PL/pgSQL.

Результат вызова функции всегда возвращается в виде списка объектов, процедуры могут использоваться для выполнения действий без возврата данных, но их результат нельзя напрямую использовать как источник данных.

Примечание: SQL — это декларативный язык запросов, предназначенный для простых запросов и манипуляций данными, PL/pgSQL — это процедурное расширение SQL, полезное для написания сложной логики внутри базы данных, когда одного SQL недостаточно.

Функции и процедуры могут располагаться в любых схемах (картах), по умолчанию они создаются в схеме public, переопределить расположение можно вручную в SQL-консоли.

Уровень привелегий определяет, от чьего имени и с какими правами будет выполняться SQL-код функции или процедуры:

  • Привилегии создателя (definer) позволяют обращаться к таблицам и объектам, к которым у текущего пользователя нет прямого доступа, но доступ есть у владельца проекта, и гарантируют стабильность работы логики, независимо от прав вызывающего пользователя;
  • Привелении исполнитель (invoker) означают, что если у пользователя нет прав на чтение или запись нужной таблицы — выполнение завершится ошибкой, результат или поведение функции может различаться в зависимости от прав вызывающего.

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

Примечание: Функции из схемы public не могут быть ограничены на вызов.

Кнопка предназначена для автоматического приведения написанного SQL-запроса к стандартизированному виду. При нажатии на неё система расставляет отступы и переносы строк в соответствии с иерархией конструкций, выравнивает ключевые слова, имена таблиц и полей, упрощает восприятие сложных запросов.

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

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

Примечание: Выбранный элемент удаляется без возможности восстановления.