2009-06-05 18 views

Respuesta

23

La vista DBA_OBJECTS listará los procedimientos (así como casi cualquier otro objeto):

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

El DBA_SOURCE vista mostrará una lista de las líneas de código fuente para un procedimiento en cuestión:

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

Nota: Dependiendo de sus privilegios, es posible que no sea capaz de consultar las vistas DBA_OBJECTS y DBA_SOURCE. En este caso, puede usar ALL_OBJECTS y ALL_SOURCE en su lugar. Las vistas DBA_ contienen todos los objetos en la base de datos, mientras que las vistas ALL_ contienen solo aquellos objetos a los que puede acceder.

+1

Desea hacer object_type en ('PROCEDIMIENTO', 'FUNCIÓN', 'PAQUETE') para obtener todo el código fuente posible. –

+0

Lo sentimos, total de Oracle noob aquí. Parece que no puedo ver esa vista/mesa. ¿Eso significa que estoy conectado como el usuario equivocado? –

+0

Puede que no tenga los privilegios necesarios para consultar esas vistas. Puedes probar ALL_OBJECTS y ALL_SOURCE en su lugar. –

0

Si desea obtener todas las llamadas a una introspección procedimientos almacenados (parámetros, etc.), se puede tirar de él fuera de este paquete de código abierto:

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

OraPIG es el Generador de Interfaz de Python Oracle. Introspecta paquetes de Oracle y genera contenedores de Python para ellos.

0

Creo que la enumeración de DBA_OBJECTS pueden haber perdido una gran cantidad de procedimientos: (estoy en Oracle 12c, está registrado como SYS)

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

Realmente parecía imposible que toda la base de datos ORACLE sólo puede tener 202 procedimientos.

y consulta de DBA_PROCEDURES:

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

26539 rows selected. 

centra ahora en el esquema SYS, que viene por defecto para cada base de datos (no es exclusivo de la mía):

Consulta para procedimientos almacenados Anónimos (http://www.praetoriate.com/t_high_perform_calling_procedures.htm) perteneciente a SYS :

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

y procedimientos almacenados no anónimos de SYS tienen 15K:

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