sql >> Database >  >> RDS >> Oracle

Hoe kunt u zien of een PL/SQL-pakket, procedure of functie wordt gebruikt?

U kunt ook proberen USER/ALL_source te bevragen:

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

of

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

Je zult zelfreferenties moeten negeren, maar dat zou gemakkelijk te herkennen moeten zijn.

Je moet ook de "view" source van user/all_views controleren. Zie echter de andere vraag over het opvragen van de weergavebron.

u kunt ook controleren of een pakket of een functie/procedure op het hoogste niveau wordt gebruikt met

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

NB:wissel user_ met all_/dba_ indien nodig

als u specifiek op zoek bent naar niet-aangeroepen functies, dan is een andere optie om uw code te compileren met WAARSCHUWINGEN ingeschakeld en vervolgens te zoeken naar PLW-06002 en 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


  1. MySQL maandelijkse verkoop van de afgelopen 12 maanden inclusief maanden zonder verkoop

  2. psql - sla de resultaten van de opdracht op in een bestand

  3. Hoe kan ik de uitvoer van de draaitabel in MySQL retourneren?

  4. PostgreSql-databasecodering wijzigen