Benjamin Zhang

目前就职于中科院计算机网络信息中心,主要兴趣集中在数据库,操作系统,中间件。

【SQL】设置某schema下的所有表的查询权限给与另外一个用户

11 Apr 2019 » SQL

设置某schema下的所有表的查询权限给与另外一个用户

0.抽象语句如下

BEGIN
   FOR R IN (SELECT owner, table_name FROM all_tables WHERE owner='TheOwner') LOOP
      EXECUTE IMMEDIATE 'grant select on '||R.owner||'.'||R.table_name||' to TheUser';
   END LOOP;
END; 

其中TheOwner替换成被查询的schema用户。TheUser替换成要查询权限的用户。

1.实际案例做法

EOS_UNIT_WK用户需要portal用户所有表的查询权限,语句如下:

BEGIN
   FOR R IN (SELECT owner, table_name FROM all_tables WHERE owner='PORTAL') LOOP
      EXECUTE IMMEDIATE 'grant select on '||R.owner||'.'||R.table_name||' to EOS_UNIT_WK';
   END LOOP;
END; 

wyoper用户需要FA模块下所有的表的查询和修改权限,如下:

BEGIN
   FOR R IN (SELECT owner, table_name FROM all_tables WHERE owner='FA') LOOP
      EXECUTE IMMEDIATE 'grant select ,update on '||R.owner||'.'||R.table_name||' to wyoper';
   END LOOP;
END; 

Related Posts