2009-12-11 8 views

risposta

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

Analogamente, digitare = 'FUNCTION' e name = 'YOURFUNCTIONNAME'. – dacracot

+0

Abbiamo diversi diversi schemi impostati. Devo fare qualcosa di speciale per trattare con quelli? –

+0

È possibile accedere allo schema specifico e user_source conterrà solo l'origine dello schema. Oppure puoi accedere come DBA e la tabella dba_source avrà anche una colonna del proprietario che puoi includere nella clausola where per specificare quale schema ti interessa. – dacracot

5

Usa:

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

Un'altra soluzione è quella di utilizzare il dbms_metadata api

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

È possibile utilizzare questo per tutti i metadati inclusi tabelle, indici e vincoli.

+0

Anche l'upvoting perché quei 'set line/set long' saranno necessari anche per gli altri meccanismi. – monojohnny

+0

@monojohnny, 'set long' non è necessario per * gli altri meccanismi *. Ancora +1, dato che dbms_metadata * è * la strada da percorrere, imho. –

Problemi correlati