Oracle: предоставить привилегии нескольким схемам в одной строке - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу написать одну строку в Oracle, чтобы я мог предоставить право выбора для таблицы нескольким схемам одновременно.

Вот что у меня есть, но я получаю синтаксическую ошибку:

GRANT SELECT ON OWNER.TABLE_NAME to (select distinct owner from dba_objects where owner like 'SCHEMA_%');

1 Ответ

0 голосов
/ 23 ноября 2018

Для этого вам понадобится динамический SQL, например,

SQL> declare
  2    l_str varchar2(200);
  3  begin
  4    for cur_r in (select 'MIKE' username from dual union all
  5                  select 'IMPORTER'      from dual union all
  6                  select 'DIP'           from dual
  7                 )
  8    loop
  9      l_str := 'grant select on emp to ' || cur_r.username;
 10      dbms_output.put_line(l_str);
 11      execute immediate l_str;
 12    end loop;
 13  end;
 14  /
grant select on emp to MIKE
grant select on emp to IMPORTER
grant select on emp to DIP

PL/SQL procedure successfully completed.

SQL>

Я использовал несколько пользователей из моей базы данных для получения имен пользователей в цикле курсора FOR;вы бы заменили его своим собственным select distinct owner from dba_objects where owner like 'SCHEMA_%'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...