生成脚本 [ORACLE]

Generating a script [ORACLE]

如何写一个获取脚本的查询,将用户c##test_user的某些table中的删除记录的权限给有权限的用户解除?.

我试过这个查询:

SELECT GRANTEE, TABLE_NAME 
FROM DBA_TAB_PRIVS 
WHERE PRIVILEGE ='DELETE' 
AND TABLE_NAME IN (SELECT TABLE_NAME 
                   FROM ALL_TABLES 
                   WHERE OWNER = 'c##test_user');

问题是我不知道如何从 select 生成脚本。有任何想法吗?。谢谢

这样做

declare
cursor DeleteGrants is
SELECT GRANTEE, TABLE_NAME 
FROM DBA_TAB_PRIVS 
WHERE PRIVILEGE ='DELETE' 
AND TABLE_NAME IN (SELECT TABLE_NAME 
                   FROM ALL_TABLES 
                   WHERE OWNER = 'c##test_user');

begin
   for aGrant in DeleteGrants loop
      execute immediate 'REVOKE DELETE ON c##test_user.'||aGrant.TABLE_NAME||' FROM '||aGrant.GRANTEE;
   end loop;
end;

如果你只是想输出而不是执行你也可以制作

SELECT 'REVOKE DELETE ON c##test_user.'||TABLE_NAME||' FROM '||GRANTEE||';' as cmd
FROM DBA_TAB_PRIVS 
WHERE PRIVILEGE ='DELETE' 
AND TABLE_NAME IN (SELECT TABLE_NAME 
                   FROM ALL_TABLES 
                   WHERE OWNER = 'c##test_user');