Когда вы думаете об этом, в определенном контексте ограничение доступа к хранимым процедурам имеет большой смысл.Процедуры предоставляют API и обрабатывают обработку (например, проверяют сложные ограничения), что в принципе хорошо.Нет простого способа объявить ограничения между столбцами, например, «если столбец A равен нулю, столбец B должен быть одним из {X, Y, Z}».Несколько приложений могут использовать API процедур, и все могут извлечь выгоду из процедур, обеспечивающих правильную обработку данных.
Однако, любой, кто пытался написать много логики в базе данных и многологика в языке ООП общего назначения знает, что первые имеют тенденцию приводить к неосуществимой, неразборчивой кодовой блокировке базы данных, в то время как последние обычно признаются как «способ написания сложных приложений / систем».
ХотяПодход API хранимых процедур еще далеко не исчерпан, я был бы искренне удивлен, увидев новый проект, начатый с использованием этого шаблона.ORM далеки от совершенства, но они дают огромные преимущества, которые все больше принимаются как должное: все приложение может быть написано на одном языке (Python, Java, Groovy, Ruby ...), выобычно может переключать СУБД за несколько минут (что творит чудеса, например, когда вы запускаете тесты на hsqldb, но используете postgresql в рабочей среде), упаковка данных из базы данных и в нее намного проще (ORM обычно возвращает объекты домена, скореечем примитивы), есть преимущества кэширования и т. д.
В свете этого вполне допустимо, чтобы приложение имело полный доступ CRUD ко всему в своей базе данных.Кроме того, если у вас есть учетная запись, которая позволяет вызывать только хранимые процедуры, я бы не рекомендовал тратить время на изучение способов обхода прав доступа: лучше использовать свое время для спора о привилегиях доступа к таблице CRUD.