Это одна из тех проблем Мармит. если вы в первую очередь программист базы данных, вы будете думать, что хранимые процедуры должны широко использоваться. Если вы программист приложения, скажем, Java или .Net-кодер, скорее всего, вы скажете, что их следует избегать полностью.
Не то чтобы это соответствовало тому, что прикладные программисты хотят писать свои собственные операторы SQL. Нет, в наши дни они стремятся абстрагироваться от замысловатых служб ORM. Их не легче понять, чем хранимые процедуры, но они доступны в одной и той же среде IDE, поэтому требуют меньшего переключения контекста.
Есть две большие вещи в пользу хранимых процедур. Во-первых, люди, знающие PL / SQL, вероятно, знакомы с базами данных Oracle (T-SQL и SQL Server и т. Д.) И поэтому будут стремиться писать более качественные программы для этой базы данных (определяемые как программы, использующие преимущества платформы. функции и приспособлены к его функциональности), чем люди, которые этого не делают.
Во-вторых, данные сохраняются. Разработчики приложений любят говорить о «независимости от базы данных», но на самом деле важно независимость от приложения . Внешние интерфейсы приходят и уходят, но модель данных существует вечно. За последние десять лет Java-приложения были написаны как апплеты, сервлеты, JSP, Tiles и Faces, с надстройками в JavaScript, Groovy, AJAX и JSON, которые подключались к базе данных через JDBC, EJB (v1,2, 3) TopLink, Hibernate и IBatis ... прости меня, если я пропустил несколько. Приложения, чей пользовательский интерфейс является надстройкой над слоем хранимых процедур, легче обновить до последних и самых лучших, чем приложения, в которых бизнес-логику необходимо переписывать каждый раз. И они тоже будут работать лучше.
Однако в долгосрочной перспективе приложения, которые напрямую взаимодействуют с базой данных, вероятно, исчезнут. Все собирается поговорить с сервисной шиной, и это решит, откуда взять данные. Конечно, магазинам, в которых база данных открывается через хорошо разработанный API хранимых процедур, может оказаться легче перейти в этот дивный новый мир, чем в те места, где придется извлекать все из своей логики ORM.