Отказ от ответственности: это не «не используйте хранимые процедуры - думайте о детях!»пост, и я не собираюсь разжечь пламенную войну.Я просто предполагаю, что повторное использование кода проще и, возможно, больше подходит для определенных ситуаций и платформ, чем для других.
Повторное использование кода как концепция, как правило, улучшает кодовую базу.Вы сохраняете вещи DRY и начинаете формировать слой общей функциональности, чтобы решать общие проблемы таким же образом.
Однако, как и все, можно ошибиться (с властью приходит ответственность, бла-бла-блабла).
В большинстве современных языков программирования относительно просто повторно использовать код, либо написав функции, либо даже создав целые фреймворки, которые можно использовать снова и снова.Однако в T-SQL это сложно, потому что у вас меньше вариантов.Хранимые процедуры могут это сделать, но вы уже видели, как они могут быть неловкими.
Мое личное предпочтение - не допускать бизнес-логику в базу данных.Это означает, что я не использую представления, UDF, sprocs и т. Д. (Если только после профилирования производительности мы не думаем, что сможем ускорить что-то с помощью этих методов), а вместо этого сохраняю это в своем коде приложения.Это часто вызывает мысли о «слое бизнес-логики», но есть разные варианты этого, так что это, вероятно, неправильно.Это, конечно, не код непосредственно за обработчиками нажатий кнопок пользовательского интерфейса и т. Д.
Я стремлюсь ограничить базу данных хранением и извлечением данных, потому что это то, в чем они действительно хороши.Мы все знаем, насколько неуклюжим и устаревшим T-SQL может быть язык (например, обработка исключений, развертывание, курсоры и т. Д.).Быть независимым от базы данных совершенно невозможно, если ваше приложение записано в саму базу данных, и вы также не можете масштабировать свое приложение, потому что база данных является приложением.Если у вас есть эта бизнес-логика в коде приложения, ее можно гораздо легче масштабировать.
В этом случае «бизнес-логика» - это запросы и преобразования, используемые для генерации ваших отчетов, и я бы изучил, как онаможет быть возможно повторно использовать код в вашем средстве создания отчетов / коде, прежде чем рассматривать другие варианты.