工作中经常会用到一个用户对另外一个用户下表的操作,遇到批量的授权或回收权限可以用如下语句执行就可以了,
一般是授予 selectupdatedeleteinsert 也可以用 grant all 表示所有
对存储过程的授权为 grant execute on 过程 to 用户 如果加 with grant option 当前被授权的用户则可以再授予给其他用户
以下是示例,实际工作中根据情况进行修改即可
--批量授予与收回
--授予 查询 插入 权限
declare cursor cur_a
is
select table_name from user_tables;
v_var varchar2(1000);
begin
open cur_a;
loop
fetch cur_a into v_var;
exit when cur_a%notfound;
execute immediate 'grant select,insert on ' ||v_var|| ' to wxzj1';
end loop;
close cur_a;
end;
--收回所有权限
declare cursor cur_a
is
select table_name from user_tables;
v_var varchar2(1000);
begin
open cur_a;
loop
fetch cur_a into v_var;
exit when cur_a%notfound;
execute immediate 'revoke all on ' ||v_var|| ' from wxzj1 ';
end loop;
close cur_a;
end;
--单个授予
grant select on 表名 to 用户名
--收回
revoke select on 表名 from 用户名
--另外一种写法--------------------------------------------------------------------------------------------------
--授予权限
declare cursor cur_a
is select table_name from user_tables;
v_sql varchar2(2000);
begin
for tablename in cur_a loop
v_sql:='grant select,insert on ' ||tablename.table_name|| ' to dbo_propertymanagementcenterim';
execute immediate v_sql;
end loop;
end;
--收回权限
declare cursor cur_a
is select table_name from user_tables;
v_sql varchar2(2000);
begin
for tablename in cur_a loop
v_sql:='revoke select,insert on ' ||tablename.table_name|| ' from dbo_propertymanagementcenterim';
execute immediate v_sql;
end loop;
end;