Как организовать бизнес-логику в хранимых процедурах SQL Server. Реализация слоя BLL в SQL

В платформе Falcon Space бизнес-логика создается прямо в хранимых процедурах.

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

К примеру, у компонента Таблицы есть хранимки GetItems (получить данные для вывода таблицы), UpdateItemField (изменение поля таблицы), RemoveItem (удаление строки), FastCreate (быстрое создание записи по 1 полю).

Процедура GetItems содержит строго определенные параметры (см. документацию по таблицам) и платформа ожидает от процедуры определенного вывода (до пяти SELECT с определенными параметрами), который она использует для настройки вывода таблицы.

Более подробно про workflow разработки простейшей страницы

Пример создания страницы с таблицей и формой на примере HR

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

Однако бывают такие ситуации, как проверка доступа, логирование операций, выполнение некой типовой операции из нескольких шагов (пополнение баланса).

В этом случае имеет смысл создавать дополнительных слой хранимых процедур и функций.

Эти процедуры будут использоваться везде в хранимых процедурах компонентов.

Именование подобных процедур в платформе Falcon Space производится следующим образом: [system]_[entity]_[operation].  Пример security_persons_canRead

Подобные хранимки не должны иметь внутри выходного select (иначе это собьет работу хранимых процедур компонентов, либо придется использовать insert into ... exec ...).

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

Примечание: Для сложной разметки имеет смысл использовать механизм HTML блоков

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

if(@isFail=1) begin
    select 0 Result, 'Что-то пошло не так...' Msg
    return
end
Насколько полезной была статья?

Что еще посмотреть по SQL Server

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK