oracle批量用户授权

(1)用游标实现
1 BEGIN
2   FOR lv_cur IN (
3 select 'grant select on ' ||owner|| '.' ||table_name|| 'to user2' AS str from dba_tables where owner='USER1'
4   ) LOOP
5      EXECUTE IMMEDIATE lv_cur.str;
6   END LOOP;
7 END;
8 /
View Code

(2)用DBMS_SYS_SQL包进行批量授权

 1 declare
 2 sqltext varchar2(200);
 3 c integer;
 4 begin
 5 for userlist in (select user_id,username from all_users where username not in ('SYS','SYSTEM','EYGLE')) loop
 6 for tablelist in (select owner,table_name from dba_tables where owner = userlist.username) loop
 7 sqltext := 'grant all on '||tablelist.owner||'.'||tablelist.table_name ||' to user2';
 8 c := sys.dbms_sys_sql.open_cursor();
 9 sys.dbms_sys_sql.parse_as_user( c,sqltext,dbms_sql.native,userlist.user_id);
10 sys.dbms_sys_sql.close_cursor(c);
11 end loop;
12 end loop;
13 end;
14 /
View Code

 

posted @ 2020-04-06 19:44  5sdba  阅读(327)  评论(0编辑  收藏  举报