2009-08-10 61 views

回答

6
SELECT grantee 
    FROM all_tab_privs 
WHERE table_name = '<your object name>' 
    AND privilege = 'EXECUTE' 
    AND grantor = '<object owner>'; 

是的,我知道它說「table_name」,但它也適用於可執行對象。表DBA_TAB_PRIVS也適用。您需要適當的權限(例如,DBA角色,SELECT ANY TALBE)才能從這些視圖中進行選擇並查看所有數據。

迴應馬丁的評論......以上是最簡單的方法來做你所要求的,我知道的。如果你想將其限制在包,試試這個:

SELECT * FROM all_tab_privs JOIN all_objects ON (table_name = object_name) 
WHERE table_name = '<your object name>' 
    AND object_type = 'PACKAGE' 
    AND privilege = 'EXECUTE' 
    AND grantor = '<object owner>'; 
+0

我要麼更多的東西一般情況下,或包裝特殊情況後居然... – MPritchard 2009-08-10 15:09:23

+1

所有被原諒!良好的舊oracle和它的系統表的無廢話命名:) – MPritchard 2009-08-10 15:14:10

+0

lol,all_tab_privs是這個表的一個可怕的名字 – Reimius 2013-11-05 21:35:21