Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment savoir si un package, une procédure ou une fonction PL/SQL est utilisé ?

Vous pouvez également essayer d'interroger USER/ALL_source :

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

ou

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

Vous devrez ignorer les références personnelles, mais cela devrait être facile à repérer.

Vous devrez également vérifier la source "view" de user/all_views. Voir l'autre question sur l'interrogation de la source de vue.

vous pouvez également vérifier si un package ou une fonction/procédure de niveau supérieur est utilisé avec

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

NB :changez user_ avec all_/dba_ si nécessaire

si vous recherchez spécifiquement des fonctions non appelées, une autre option consiste à compiler votre code avec les AVERTISSEMENTS activés, puis à rechercher PLW-06002 et 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