【问题标题】:Generating a script [ORACLE]生成脚本 [ORACLE]
【发布时间】:2016-12-07 12:50:18
【问题描述】:

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

我试过这个查询:

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

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

【问题讨论】:

    标签: sql oracle plsql oracle12c


    【解决方案1】:

    这样做

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2011-08-17
      • 2022-01-27
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多