Грант SELECT на нескольких таблицах oracle

У меня есть 3 таблицы table1, table2, table3. Я хочу предоставить (выбрать, например) эти таблицы пользователю user1.

Я знаю, что я могу с:

grant select on table1 to user1;
grant select on table2 to user1;
grant select on table3 to user1;

могу ли я предоставить 3 таблицы user1, используя только 1 запрос?

спасибо

4 ответов


нет. Как показывает, вы можете предоставить доступ только к одному объекту за раз.


вы можете сделать это с помощью динамического запроса, просто запустите следующий скрипт в pl-sql или sqlplus:

select 'grant select on user_name_owner.'||table_name|| 'to user_name1 ;' from dba_tables t where t.owner='user_name_owner'

и затем выполнить результат.


мое предложение...создайте роль в oracle с помощью

create role <role_name>;

затем назначьте привилегии этой роли, используя

grant select on <table_name> to <role_name>;

затем назначьте эту группу привилегий через эту роль любому пользователю с помощью

grant  <role_name> to <user_name>...;

это сработало для меня в моей базе данных Oracle:

SELECT   'GRANT SELECT, insert, update, delete ON mySchema.' || TABLE_NAME || ' to myUser;'
FROM     user_tables
where table_name like 'myTblPrefix%'

затем скопируйте результаты, вставьте их в Редактор, а затем запустите их как сценарий.

вы также можете написать сценарий и использовать "выполнить немедленно" для запуска сгенерированного SQL, если вы не хотите дополнительных шагов копирования/вставки.