Я думаю, что хранимые процедуры в настоящее время НИКОГДА не должны использоваться для всей системы как единственный метод доступа к базе данных. Это устаревшая архитектура, которая в долгосрочной перспективе дает гораздо больше проблем с обслуживанием, чем преимущества. В настоящее время существует много лучших способов обработки каждого требования к доступу к данным. Лучшее использование хранимой процедуры для некоторых редких случаев, когда вы хотите, чтобы одна, четко определенная и уникальная функция извлекала данные, которые, как вы знаете, будут использоваться таким же образом другими приложениями. Хранимая процедура позволит вам быть СУХОЙ в этом случае. Также в некоторых случаях, когда ваш администратор db, который обрабатывает систему безопасности, должен защищать определенную часть данных (например, таблицу кредитных карт) таким гранулированным способом, чтобы обеспечить доступ только к SP - это хороший вариант.
Помимо этих случаев избегайте хранимых процедур как можно больше и придерживайтесь только кода, обладающего всеми преимуществами наследования, проверки компиляторов, инструменты для рефакторизации, перечисления вместо магических строк также в запросах, управлении источниками, упрощенном развертывании и т. Д. и т. д. Список преимуществ, позволяющих избежать SP как можно больше, слишком длинный, чтобы проходить в настоящее время.
НО, если по какой-либо причине вы решили использовать хранимые процедуры, вы могли бы также поставить бизнес-логику там, где такой слой настолько близко к данным, что даже не позволял ему содержать бизнес-логику, просто еще больше усложнит ваш проект, и вы не будет пользоваться очень немногими положительными моментами использования SP.
Ваш сарказм хорошо взят. Для меня хранимые процедуры выглядят как ужасные подражания COBOL «устаревшей архитектурой». Большинство разработчиков не заботятся о 3-й нормальной форме и просто потому, что они могут это сделать. Повреждение rowid autonumber на столе не делает его отношением вообще. Они должны были застрять с COBOL, если они просто собирались замаскировать файл в виде таблицы. Раздел данных определил ваши данные, а раздел «Рабочий блок» определил вашу процедуру.COBOL будет жить вечно! – dannyrosalex