数据库中批量授权与回收权限
2015-12-29 18:44
357 查看
--授予 查询 插入 权限
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;
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;
相关文章推荐
- oracle 表锁死的解决方法
- 在Hibernate工程中如何让数据库从MYSQL换成ORACLE
- mysql 数据表中查找、删除重复记录
- 纵论数据库安全审计产品的三代演进
- Hibernate执行原生态sql语句
- mysql 性能小记
- postgresql 优化之--不会使用索引
- Cmake MySQL5.6 编译安装
- mysql5.5的安装配置选项
- 一台服务器上的mysql多实例
- mysql的基础操作命令
- 数据库sql中and和or优先级的问题
- 更改mysql访问权限
- Mysql复制还原后root帐号权限丢失问题
- 自动化测试使用mybatis更新数据库信息实例
- 数据库优化基础
- 修改mysql用户密码
- innobackupex备份mysql数据库
- SQLServer使用sql语句复制数据库
- mybatis查询数据库返回结果为空