数据库中批量授权与回收权限

本文介绍了一种使用PL/SQL过程批量为数据库用户授予权限和回收权限的方法。通过游标循环遍历用户表,动态执行SQL语句实现对多个表的SELECT和INSERT权限的授予及撤销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



--授予 查询 插入 权限 
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';  -- SELECT ,INSERT,DELETE ,UPDATE,
    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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值