ale-Just |
Но именно от этой идеи просто "визжит" начальство, а я должен доказать что это ошибка и для Oracle это не правильно. |
Это не то что "ошибка", "правильно" или "неправильно". По большому счету это безразлично. Через процедуры можно реализовать нормальную систему безопасности. Ту же систему безопасности можно реализовать без процедур. Между различными подходами есть.. назовем так, технические отличия, и лично я полагаю разумным применять то, что наиболее подходит в данном конкретном случае.
На практике оказывается, что "визжащие" от данной идеи часто предполагают, что набор автосгенерированных процедур типа SelectById, SelectAll, Insert, Update, Delete правильнее, нежели прямой доступ к таблице. Я пару раз пробовал копнуть глубже - оказывалось, что они так считают, потому что "все говорят" или "везде написано", или еще что-нибудь столь же интересное. Это, разумеется, не значит, что процедуры хуже других подходов.
По моим недоказуемым ощущениям, истерика вокруг процедурного метода сложилась по двум причинам: во-первых, из-за недостаточных или недостаточно хороших инструментов контроля доступа в различных серверах БД (которые породили желание явно, кодом управлять доступом), а во-вторых из-за того, что набиравший тогда обороты MSSQL 2000 был оптимизирован именно в части работы хранимок (здесь я опираюсь на разговоры с mssql-евцами - в частности, как они говорят, при передаче sql-я с клиента отсутствует понятие bind variables как таковых).