stored salida procedimientos procedimiento parametros funciones example entrada ejemplos ejecutar con almacenado oracle plsql statistics dead-code

salida - procedure oracle ejemplos



¿Cómo puede saber si se está utilizando un paquete, procedimiento o función PL/SQL? (6)

No por defecto. Pero puede usar la funcionalidad de auditoría de su base de datos Oracle. ¡En Ask Tom hay un largo hilo sobre la auditoría de las llamadas a procedimientos!

¿Cómo puede saber si se está utilizando un paquete, procedimiento o función PL / SQL? ¿Hay una tabla o vista de Oracle que contenga estadísticas sobre el uso de paquetes, procedimientos o funciones de PL / SQL?


Puede ver si un objeto tiene dependencias consultando la tabla DBA_DEPENDENCIES.

SELECT OWNER, NAME, TYPE FROM SYS.DBA_DEPENDENCIES WHERE REFERENCED_OWNER = ''<your object owner>'' AND REFERENCED_NAME = ''<your object name>'' AND REFERENCED_TYPE IN (''PACKAGE'', ''PROCEDURE'', ''FUNCTION'');

Esta consulta devolverá cualquier dependencia en el código almacenado dentro de la propia instancia de Oracle.

No revelará si se llama o no a algún objeto fuera de la instancia.


Puedes usar editores como Toad. Enumerarán directamente tanto los objetos de los que depende su procedimiento como los objetos que hacen referencia a su procedimiento.


Si estás en Oracle 11 (R2?), Le daré una oportunidad a PL/Scope .

El docu afirma: PL / Scope es una herramienta impulsada por compilador que recopila datos sobre los identificadores en el código fuente de PL / SQL en el momento de la compilación de la unidad del programa y lo pone a disposición en vistas de diccionarios de datos estáticos. Los datos recopilados incluyen información sobre los tipos de identificadores, usos (declaración, definición, referencia, llamada, asignación) y la ubicación de cada uso en el código fuente.

PL / Scope permite el desarrollo de navegadores de código fuente de PL / Scope potentes y efectivos que aumentan la productividad del desarrollador de PL / SQL al minimizar el tiempo dedicado a la navegación y comprender el código fuente.

Puede encontrar más información al respecto en http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_plscope.htm#g1010526


También puede encontrar el paquete de instrumentación pl / sql de la ILO útil para lo que está tratando de hacer.


También puede intentar consultar USER / ALL_source:

SELECT * FROM all_source where UPPER(TEXT) like UPPER(''%procedure_name%'')

o

SELECT * FROM all_source where UPPER(TEXT) like UPPER(''%package.function_name%'')

Tendrá que ignorar las referencias propias, pero eso debería ser fácil de detectar.

También deberá verificar la fuente de "vista" del usuario / all_views. Ver la otra pregunta acerca de consultar la fuente de vista sin embargo.

También puede verificar si se utiliza un paquete o una función / procedimiento de nivel superior con

select * from all_dependencies where referenced_name like ''%PACKAGE_NAME%'';

NB: cambiar usuario_ con all_ / dba_ según sea necesario

Si está buscando específicamente funciones no llamadas, otra opción es compilar su código con las ADVERTENCIAS activadas y luego buscar PLW-06002 y LPW-06006.

exec DBMS_WARNING.add_warning_setting_cat(''ALL'',''ENABLE'',''SESSION'') create or replace function x return number as procedure y is begin null; end; begin return 0; return 1; end; show errors Errors for FUNCTION X: LINE/COL ERROR -------- ----------------------------------------------------------------- 1/1 PLW-05018: unit X omitted optional AUTHID clause; default value DEFINER used 3/1 PLW-06006: uncalled procedure "Y" is removed. 6/1 PLW-06002: Unreachable code