Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak można stwierdzić, czy używany jest pakiet, procedura lub funkcja PL/SQL?

Możesz również spróbować wysłać zapytanie do USER/ALL_source:

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

lub

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

Będziesz musiał zignorować odniesienia do siebie, ale powinno to być łatwe do zauważenia.

Musisz także sprawdzić źródło „widoku” z user/all_views. Zobacz jednak inne pytanie dotyczące zapytania o źródło widoku.

możesz również sprawdzić, czy pakiet lub funkcja/procedura najwyższego poziomu jest używana z

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

Uwaga:w razie potrzeby zamień użytkownika_ na all_/dba_

jeśli szukasz specjalnie niewywoływanych funkcji, inną opcją jest skompilowanie kodu z włączonymi OSTRZEŻENIAMI, a następnie wyszukanie PLW-06002 i 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Problem z przerywanym połączeniem Oracle JDBC

  2. Oracle Database BLOB do InputStream w Javie?

  3. Jak zwiększyć bufor dbms_output?

  4. ORA-00936:brak wyroczni wyrażenia

  5. Konwersja current_timestamp Oracle na sekundy