Обычно это отстой по разным причинам. Если вы работаете с объектно-ориентированным, то хранимые процедуры не являются хорошим местом для логики, потому что ваши объекты там больше не существуют. Объект может находиться в нескольких таблицах.
Во-вторых. SQL - чертовски плохой язык для кодирования сложной логики. Для этого просто нет смысла - одна из причин, по которой SQL Server позволяет писать SP в .NET. Попробуйте вычислить хэш в SQL, и вы поймете, что я имею в виду - все виды строковых манипуляций - это еще одна область. Грязный как черт.
SP в целом довольно часто делаются с идиотскими аргументами. Подобные идиотам аргументы, которые люди приводят, чтобы защитить их, просто не соответствуют действительности. У Франса Бурмы есть список наиболее часто используемых заблуждений и хорошее объяснение, почему аргументы в основном глупые, бессмысленные в http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx - и да, именно этот уровень идиотизма (как люди, которые даже не читают документацию или не думают о том, что они на самом деле говорят, во всех последствиях).
У меня лично есть ограниченные системы с хранимыми процедурами, и у меня есть следующие: ограниченная сложность, но высокая производительность. В основном нет наследования, потому что объектная модель проста, транзакционная логика в SP не слишком сложна, и мне нужна / нужна очень малая скорость блокировки, поэтому некоторые операции перемещаются в хранимые процедуры. Кроме того, это конкретное приложение также имеет очень необычную объектную модель (объекты динамически передаются из разных источников, никогда не обновляются, всегда заменяются, и все изменения ДОЛЖНЫ проходить через службы, а не вноситься в объект - иногда потому, что изменение «запросили» на другом компьютере в другой стране в другой организации.
Хорошим примером является высокопроизводительная система бухгалтерского учета (поскольку она отслеживает сделки из полностью автоматизированных торговых систем). Логика в каждом SP не очень сложна, но я хочу, чтобы SQL работал как можно быстрее.
Теперь, плохие стороны хранимых процедур также очень полезны. Нет правильной среды тестирования, нет поддельных рамок, интеграция с управлением исходным кодом выглядит немного неловко (но выполнимо с правильным набором инструментов). Интегрированная отладка? Что ж, моя огромная благодарность Microsoft и Visual Studio - это действительно работает (точка останова в хранимой процедуре - действительно приятно).
Мне еще предстоит увидеть один подход, использующий множество хранимых процедур, которые не были защищены аргументами с полным упорством - на уровне фактической демонстрации уровня мышления «сотрудник должен быть уволен». Может быть, они там, но я их не видел.