您的位置:首页 > 其它

一个用户下表、批量授予权限给另一个用户

2015-04-21 16:49 375 查看
工作中经常会用到一个用户对另外一个用户下表的操作,遇到批量的授权或回收权限可以用如下语句执行就可以了,
一般是授予 select\update\delete\insert 也可以用 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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: