Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQL | Можно ли создавать представление внутри хранимой процедуры?

tatuska Знаток (261), на голосовании 2 года назад
Можно ли создавать представление внутри хранимой процедуры или только вне её?
Голосование за лучший ответ
Дед Мазай Гений (58137) 2 года назад
Думаю, это зависит от СУБД. Обычно это возможно, но так не делают. Хранимая процедура должна работать с данными, а не изменять структуру БД.
Например, в Oracle можно создать представление (или ещё что-то) хранимой процедурой. Но это нельзя просто так написать, как обычный SQL. "create view" надо запихнуть в строку, и выполнить эту строку (с помощью execute immediate или как-то ещё)
koma Мыслитель (5402) 2 года назад
Во-первых, как сказал уважаемый Дед Мазай, можно запихнуть код создания в строку и вызвать execute immediate. Крайне "дырявый" с точки зрения безопасности метод. Я слышал, что иногда его отключают.
Во-вторых, некоторые (не все) СУБД позволят Вам напрямую в код хранимой процедуры внести строчки "Create View"
В-третьих, Вы можете напрямую работать с таблицами системной базы данных, в которых хранится структура всех баз данных этого сервера. (крайне геморройный метод и опять, не все СУБД позволят).
НО. Зачем Вам это надо? Создание представления относится к уровню изменения структуры базы данных. Как правило, простые пользователи БД не имеют таких прав и ваша хранимая процедура не будет работать. Конечно можно запускать процедуру с правами создателя. Но не все админы позволят поставить такую процедуру.
Вы уверены, что нет другого решения Вашей проблемы?
Похожие вопросы