2016-12-07 3 views
1

ユーザーC## test_userの一部の表のレコードを削除する権限を削除するスクリプトを取得する問合せを作成する方法は?スクリプトの生成[ORACLE]

私はこのクエリを試してみました:

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

問題は、私が選択からスクリプトを生成する方法がわからないということです。何か案は?。

答えて

3

は、あなただけの出力が好きではなく、あなたはまた、

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

が、それは完璧に動作しますが、どうもありがとうございまし行うことができます実行する場合は、それを

このような
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; 

を実行してください、ありがとうございました。 – Python241820

関連する問題