sql - 在 Oracle Developer 中撤销多个用户
问题描述
我想根据 select 语句从用户列表中删除一个角色。我的 select 语句工作正常,但是当我尝试实现 revoke 语句时,我得到“缺少或无效的特权”。
我假设我缺少用于读取用户列表的命令的某些内容,但不确定如何使它在列表中循环。
REVOKE ORACLE_ROLE FROM (SELECT GRANTEE
FROM DBA_ROLE_PRIVS
JOIN SYS.DBA_USERS ON DBA_ROLE_PRIVS.GRANTEE = DBA_USERS.USERNAME
WHERE DBA_ROLE_PRIVS.GRANTED_ROLE = 'ROLE_1'
AND DBA_USERS.ACCOUNT_STATUS != 'OPEN'
AND EXISTS (SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE != 'ROLE_1'));
解决方案
你可以这样做:
SELECT 'REVOKE ORACLE_ROLE FROM ' || GRANTEE || ' ;'
FROM DBA_ROLE_PRIVS
JOIN SYS.DBA_USERS ON DBA_ROLE_PRIVS.GRANTEE = DBA_USERS.USERNAME
WHERE DBA_ROLE_PRIVS.GRANTED_ROLE = 'ROLE_1'
AND DBA_USERS.ACCOUNT_STATUS != 'OPEN'
AND EXISTS (SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE != 'ROLE_1');
然后执行输出。
如果你愿意,你可以手动或在execute immediate
推荐阅读
- java - JavaFX 保存实例状态
- python - 如何在heroku上配置mailgun插件
- php - 从 WooCommerce 结帐管理器中的其他结帐字段更改订单
- angular - Angular date object setting hour causes date to be day before
- ionic-framework - Ionic 4 how do I receive componentProps?
- javascript - setState 在 axios fetch 中不起作用
- config - 用于示例代码的 swagger codegen 配置文件
- java - 无法从终端运行 Eclipse Photo 2018 - OpenJDK 64 位服务器 VM 警告:忽略选项 MaxPermSize;在 8.0 中删除了支持
- python - if 语句没有正确评估
- amazon-web-services - AWS - EC2 - 实例空间不足