2009-08-10 15 views

risposta

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

Sì, lo so, si dice "nome_tabella" ma si applica anche agli oggetti eseguibili. Anche la tabella DBA_TAB_PRIVS funziona. Avrai bisogno di autorizzazioni appropriate (ad es., Ruolo DBA, SELEZIONA QUALUNQUE TALBE) per selezionare da queste viste e vedere tutti i dati.

In risposta al commento di Martin ... Quanto sopra è il modo più semplice per fare ciò che hai chiesto che io conosca. Se si vuole limitare a pacchetti, provate questo:

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

Sono stato in realtà dopo il verificarsi qualcosa di più generale, o di un caso specifico pacchetto di ... – MPritchard

+1

tutto è perdonato! Buon vecchio oracolo e la sua assurdità nella denominazione delle tabelle di sistema :) – MPritchard

+0

lol, all_tab_privs è un nome terribile per questa tabella – Reimius

Problemi correlati