2009-12-11 9 views

Respuesta

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

Igualmente escriba = 'FUNCTION' y name = 'YOURFUNCTIONNAME'. – dacracot

+0

Tenemos varias configuraciones de esquema diferentes. ¿Debo hacer algo especial para lidiar con eso? –

+0

Puede iniciar sesión en el esquema específico y user_source solo contendrá la fuente de ese esquema. O puede iniciar sesión como DBA y la tabla dba_source también tendrá una columna de propietario que puede incluir en su cláusula where para especificar en qué esquema está interesado. – dacracot

5

Uso:

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

Otra solución es utilizar el dbms_metadata API

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

Usted puede usar esto para todos los metadatos incluidos tablas, índices y restricciones.

+0

Upvoting porque esos 'set line/set long' serán necesarios también para los otros mecanismos, creo. – monojohnny

+0

@monojohnny, 'set long' no es necesario para * los otros mecanismos *. Todavía +1, como dbms_metadata * es * el camino a seguir, imho. –

Cuestiones relacionadas