Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào bạn có thể biết nếu một Gói, Thủ tục hoặc Hàm PL / SQL đang được sử dụng?

Bạn cũng có thể thử truy vấn USER / ALL_source:

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

hoặc

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

Bạn sẽ phải bỏ qua các tham chiếu bản thân, nhưng điều đó sẽ dễ dàng nhận ra.

Bạn cũng sẽ cần kiểm tra nguồn "view" từ user / all_views. Xem câu hỏi khác về truy vấn nguồn chế độ xem.

bạn cũng có thể kiểm tra xem một gói hoặc chức năng / thủ tục cấp cao nhất được sử dụng với

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

NB:chuyển user_ với all_ / dba_ nếu cần

nếu bạn đang đặc biệt tìm kiếm các chức năng chưa được gọi thì một tùy chọn khác là biên dịch mã của bạn với WARNINGS được bật và sau đó tìm PLW-06002 và 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. Oracle lựa chọn hành vi cập nhật

  2. 7 cách để kiểm tra phiên bản Oracle của bạn

  3. Kích hoạt Oracle sau khi chèn hoặc xóa

  4. Hàm SYS_GUID () trong Oracle

  5. Làm thế nào để loại bỏ các Zeros hàng đầu khỏi Ngày trong Oracle