2009-12-11 7 views

Répondre

7
select 
    text 
from 
    user_source 
where 
    type = 'PROCEDURE' 
and 
    name='YOURPROCEDURENAME' 
order by 
    line; 
+0

De même, tapez = 'FUNCTION' et name = 'YOURFUNCTIONNAME'. – dacracot

+0

Nous avons plusieurs schémas différents mis en place. Dois-je faire quelque chose de spécial pour y faire face? –

+0

Vous pouvez soit vous connecter au schéma spécifique, et user_source ne contiendra que la source de ce schéma. Ou vous pouvez vous connecter en tant que DBA et la table dba_source aura également une colonne propriétaire que vous pouvez inclure dans votre clause where pour spécifier le schéma qui vous intéresse. – dacracot

5

Utilisation:

SELECT us.name, 
     us.type, 
     us.text 
    FROM USER_SOURCE us 
WHERE us.type IN ('PROCEDURE', 'FUNCTION') 
ORDER BY name, line 
3

Une autre solution consiste à utiliser la DBMS_METADATA api

set line 200 
set long 10000 
select dbms_metadata.ddl('PACKAGE','Package Name') from dual; 

Vous pouvez l'utiliser pour toutes les métadonnées y compris tables, les index et les contraintes

+0

Upvoting parce que ceux 'set line/set long' seront aussi nécessaires pour les autres mécanismes je pense. – monojohnny

+0

@monojohnny, 'set long' n'est pas nécessaire pour * les autres mécanismes *. Encore +1, comme dbms_metadata * est * le chemin à parcourir, à mon humble avis. –