Sql 生成脚本[ORACLE]

Sql 生成脚本[ORACLE],sql,oracle,plsql,oracle12c,Sql,Oracle,Plsql,Oracle12c,如何编写一个查询,获取一个脚本,将删除用户c###test#U用户某些表中记录的权限删除给拥有该权限的用户 我尝试了以下查询: SELECT GRANTEE, TABLE_NAME FROM DBA_TAB_PRIVS WHERE PRIVILEGE ='DELETE' AND TABLE_NAME IN (SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'c##

如何编写一个查询,获取一个脚本,将删除用户c###test#U用户某些表中记录的权限删除给拥有该权限的用户

我尝试了以下查询:

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');