С моей точки зрения, я думаю, что хранимые процы - это путь. Во-первых, их легче поддерживать, поскольку быстрое изменение на один означает просто запуск сценария без перекомпиляции приложения. Во-вторых, они намного лучше для безопасности. Вы можете устанавливать разрешения на уровне sp, а не непосредственно на таблицы и представления. Это помогает предотвратить мошенничество, поскольку пользователи не могут ничего делать напрямую с базой данных, которая не указана в хранимом процессе. Их легче настроить на производительность. Когда вы используете хранимые процедуры, вы можете использовать метаданные зависимости базы данных, чтобы определить влияние изменений базы данных на базу кода. Во многих системах не все операции доступа к данным или даже операции CRUD будут осуществляться через приложение, так как наличие кода на мой взгляд является контрпродуктивным. Если весь доступ к данным находится в одном месте (идея, которую я поддерживаю), он должен находиться в базе данных, где он доступен для всех приложений или процессов, которым может потребоваться его использование.
Я обнаружил, что разработчики приложений часто не выбирают лучший способ обработки информации базой данных, поскольку они сосредоточены на приложении, а не на бэкэнде. Поместив код для базы данных в базу данных, к которой он принадлежит, его с большей вероятностью увидят и проанализируют специалисты по базам данных, которые рассматривают базу данных и ее производительность. Мы поддерживаем сотни баз данных и приложений здесь. Я могу посмотреть в любой базе данных и найти код, который мне нужно найти, когда что-то идет медленно. Мне не нужно загружать код приложения для каждого из сотен различных приложений, просто чтобы увидеть ту часть, которая мне нужна для выполнения моей работы.