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 /
(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 /
业余经济爱好者