Перейти к основному содержимому
Версия: 6.x

Пользовательская формула (FORMULA)

Оператор пользовательской формулы позволяет создавать свойство, вычисляющее некоторую формулу на языке SQL. При этом, можно задавать различные реализации формулы для различных SQL серверов. Формула задается в виде строки, внутри которой для обращения к параметру используется спецсимвол $ и номер этого параметра (начиная с 1). Соответственно, количество параметров у полученного свойства будет равно максимальному из номеров использованных параметров.

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

Определение класса результата​

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

Язык​

Для объявления свойства с помощью пользовательской формулы используется оператор FORMULA.

Примеры​

// свойство с двумя параметрами: округляемым числом и количеством знаков после запятой
round(number, digits) = FORMULA 'round(CAST(($1) as numeric),$2)';

// свойство, преобразовывающее значение, переданное в качестве аргумента, к строковому типу длиной в 15 символов.
toString15(str) = FORMULA BPSTRING[15] 'CAST($1 AS character(15))';

// свойство с двумя различными реализациями для разных диалектов SQL
jumpWorkdays = FORMULA NULL DATE PG 'jumpWorkdays($1, $2, $3)', MS 'dbo.jumpWorkdays($1, $2, $3)';