2009-06-05 10 views

Répondre

23

La vue DBA_OBJECTS énumérera les procédures (ainsi que presque tous les autres objets):

SELECT owner, object_name 
FROM dba_objects 
WHERE object_type = 'PROCEDURE' 

DBA_SOURCE vue listera les lignes de code source pour une procédure en question:

SELECT line, text 
FROM dba_source 
WHERE owner = ? 
    AND name = ? 
    AND type = 'PROCEDURE' 
ORDER BY line 

Note: En fonction de vos privilèges, vous ne pouvez pas être en mesure d'interroger les vues DBA_OBJECTS et DBA_SOURCE. Dans ce cas, vous pouvez utiliser ALL_OBJECTS et ALL_SOURCE à la place. Les vues DBA_ contiennent tous les objets dans la base de données, tandis que les vues ALL_ contiennent uniquement les objets auxquels vous pouvez accéder.

+1

Vous voulez faire object_type dans ('PROCEDURE', 'FONCTION', 'PACKAGE') pour obtenir tout le code source possible. –

+0

Désolé, total Oracle noob ici. Je n'arrive pas à voir cette vue/table. Cela signifie-t-il que je suis connecté en tant que mauvais utilisateur? –

+0

Vous ne pouvez pas avoir les privilèges nécessaires pour interroger ces vues. Vous pouvez essayer ALL_OBJECTS et ALL_SOURCE à la place. –

0

Si vous souhaitez obtenir tous les appels à introspect procédures stockées (paramètres, etc.), vous pouvez la retirer de ce paquet open source:

http://code.google.com/p/orapig

OraPIG est le générateur d'interface Python Oracle. Il introspecte les paquets Oracle et génère des wrappers python pour eux.

0

Je pense que l'énumération de DBA_OBJECTS ont peut-être manqué beaucoup de procédures: (je suis sur 12c Oracle, connectez-vous SYS)

select count(*) from dba_objects where object_type = 'PROCEDURE'; 
     202 

Il a vraiment regardé impossible que l'ensemble de la base de données ORACLE ne peut avoir que 202 procédures.

et l'interrogation de DBA_PROCEDURES: appartenant à SYS

Interrogation pour ANONYMOUS procédures stockées (http://www.praetoriate.com/t_high_perform_calling_procedures.htm):

select owner||'-'||object_name || '-'||procedure_name from 
dba_procedures WHERE PROCEDURE_NAME IS NOT NULL; 

26539 rows selected. 

se concentrant maintenant sur le schéma SYS, qui vient par défaut pour chaque base de données (pas unique à la mienne) :

select owner||'-'||object_name || '-'||procedure_name from dba_procedures WHERE PROCEDURE_NAME IS NULL and owner = 'SYS'; 
994 rows selected. 

et procédures stockées non anonymes SYS ont 15K:

select owner||'-'||object_name || '-'||procedure_name from dba_procedures WHERE PROCEDURE_NAME IS NOT NULL and owner = 'SYS'; 
15408 rows 
Questions connexes