Как организовать бизнес-логику в хранимых процедурах 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

SQL. Как работать с датами в SQL Server

SQL Server. Как переносить на новую строку в строковой переменной в SQL

SQL. Вывод разметки HTML в сыром виде (в виде тегов) в SQL

SQL. Как привести дату в строку в нужный формат в SQL Server

SQL. Как использовать select from Хранимка

SQL. Как прописью написать число в SQL

SQL. Как массово залить данные в таблицу БД через CSV (Excel)

SQL. Как перенести сложный тип данных на другую базу

SQL. Как перевести дату JS в дату SQL

SQL. Как выводить окончание у множественного числа (5 заказОВ, 3 заказА)

Настройка полнотекстового поиска fulltext search в SQL Server

Как занести тестовые данные в таблицу SQL Server

Ищем партнеров-разработчиков на T-SQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML
Работа на MS SQL Server

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

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