powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вопрос про execute immediate
21 сообщений из 21, страница 1 из 1
вопрос про execute immediate
    #32134802
klavs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точнее так :
почему если я просто пишу :
безымянный блок
begin
execute immediate 'create table tbl(id number)';
end;
- все проходит нормально и таблица создается
а если то же самое запихнуть в процедуру
Insufficient privileges !
хотя под дба
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32134804
new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
просто если ты пихаешь это в процедуру тебе надо на прямую давать права на создание таблицы а не через роль....
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32134818
klavs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да
спасибо
действительно
а почему так ?
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32134820
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Патамучта

Я надеюсь, этот код с созданием таблицы на лету - сервисного характера, не из приложения?
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32134825
klavs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет
не из приложения ;)))
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32134826
klavs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя
патамучта
- это не ответ ;)
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32134840
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Патамучта роль - это как маска, её в любой момент пользователь может сменить, о чём совершенно не догадываются его процедуры и триггеры.

В отличие от привилегий.
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32134847
klavs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо
хотя
если забрать явную привилегию
процедура тож не узнает
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32134854
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Узнает.
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32135547
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Scott Tiger

то есть ты хочешь сказать что при снятии привилегии, появится warning или ошибка, что такая то процедура не может быть выполнена???

А вообще если пользователь создает процедуру, при чем на выполнение некоторой команды у него нет необходимых привилегий, он сможет ее создать?
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32135559
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Именно.
2. Подробнее.
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32135563
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Violina:
Допустим user1 дал грант для user2:
grant select on table1 to user2;
Потом user2 использует select в своей процедуре:

create or replace procedure proc1
......
begin
select f1 into v_f1 from user1.table1;
end;

Создание пройдёт замечательно.


Потом user1 делает:
revoke select on table1 from user2;

Посел чего процедура юзера user2 становится инвалидной и она не может быть откомпилирована без ошибок, тем более выполнена.
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32135577
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to softbuilder

А она будет перекомпилиться после revoke select on table1 from user2; или иными словами связь через привилегии считается зависимостью, требующей перекомпиляции процедуры?
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32135590
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Violina:
после того как будет сделано revoke select on table1 from user2,
процедура не сможет откомпилиться по простой причине:
Код: plaintext
1.
2.
3.
4.
select f1 from user1.table1
               *
ERROR at line  1 :
ORA- 00942 : table or view does not exist
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32135596
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to softbuilder

Причина ясна. Мой вопрос - будет ли сопровождаться

revoke select on table1 from user2

каким нибудь warning'ом? И будет ли осуществлена попытка перекомпилить процедуру?

Или сообщения об ошибке возникнут потом при попытке ее вызова?
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32135603
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При попытке выполнения. Аналогично и после восстановления привилегий при попытке выполнения процедура сначала скомпилируется.
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32135618
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за разъяснения!
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32136640
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитала, что можно роль сделать с паролем. Зачем это нужно и как это работает, точнее когда спрашивается этот пароль - когда запрашивается привилегия, содержащаяся в такой защищенной роли, для какой нибудь операции или когда данная роль присваивается юзеру или другой роли?

А можно присвоить роль юзеру а потом забрать одну привилегию, не меняя роли?
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32136655
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забрать привилегию можно у роли. Если привилегия дана через роль, то дать revoke эту привилегию from user нельзя.

Роли с паролями нужны для повышения безопасности приложения. Если роль не активирована автоматически при коннекте пользователя, то активировать ее можно только при указании пароля.
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32136656
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забрать привилегию можно у роли. Если привилегия дана через роль, то дать revoke эту привилегию from user нельзя.

Роли с паролями нужны для повышения безопасности приложения. Если роль не активирована автоматически при коннекте пользователя, то активировать ее можно только при указании пароля.
...
Рейтинг: 0 / 0
вопрос про execute immediate
    #32136741
klavs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
про мой вопрос
если в процедуре содержится
execute immediate 'create table...'
то даже при отсутствии привилегии create any table компиляция проходит нормально
и ,следовательно, когда
я убираю/добавляю привилегию - процедура не реагирует :)
только на этапе выполнения ругается или нет
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вопрос про execute immediate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]