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