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

Chế độ xem ALL_PROCEDURES không hiển thị PROCEDURE_NAME

Từ tài liệu,

ALL_PROCEDURES liệt kê tất cả các hàm và thủ tục, cùng với các thuộc tính liên kết. Ví dụ:ALL_PROCEDURES cho biết lỗi không phải là một chức năng được kết nối, được kích hoạt song song hoặc một chức năng tổng hợp. Nếu một hàm là pipelined hoặc một hàm tổng hợp, thì kiểu triển khai liên kết (nếu có) cũng được xác định.

Nó không làm rõ liệu nó có liệt kê một THỦ TỤC CŨNG ĐỨNG hay không và một thủ tục được bao bọc trong một GÓI cùng một cách hay nó xem xét nó theo cách khác. Kể từ đó, procedure_name sẽ không liệt kê tên của một thủ tục độc lập như đã thấy trong trường hợp thử nghiệm trong câu hỏi ở trên.

PROCEDURE_NAME cột sẽ chỉ có tên thủ tục cho các thủ tục là một phần của PACKAGE . Đối với các THỦ TỤC ĐÁNH BẰNG ĐỨNG, bạn cần sử dụng OBJECT_NAME .

SQL> show user
USER is "LALIT"
SQL> CREATE OR REPLACE
  2  PROCEDURE new_proc
  3  AS
  4  BEGIN
  5    NULL;
  6  END;
  7  /

Procedure created.

SQL>
SQL> SELECT owner,
  2    object_name,
  3    procedure_name,
  4    object_type
  5  FROM all_procedures
  6  WHERE owner='LALIT'
  7  AND object_name='NEW_PROC';

OWNER OBJECT_NAME     PROCEDURE_NAME  OBJECT_TYPE
----- --------------- --------------- ---------------
LALIT NEW_PROC                        PROCEDURE

SQL>

Bạn chỉ có thể lấy danh sách các thủ tục bằng tên procedure_name nếu nó được gói trong một gói.

SQL> -- package
SQL> CREATE OR REPLACE
  2  PACKAGE new_pack
  3  IS
  4    PROCEDURE new_proc;
  5  END new_pack;
  6  /

Package created.

SQL>
SQL> -- package body with a procedure
SQL> CREATE OR REPLACE
  2  PACKAGE BODY new_pack
  3  IS
  4  PROCEDURE new_proc
  5  IS
  6  BEGIN
  7    NULL;
  8  END;
  9  END new_pack;
 10  /

Package body created.

SQL> SELECT owner,
  2    object_name,
  3    procedure_name,
  4    object_type
  5  FROM all_procedures
  6  WHERE owner='LALIT'
  7  AND procedure_name='NEW_PROC';

OWNER OBJECT_NAME     PROCEDURE_NAME  OBJECT_TYPE
----- --------------- --------------- -----------
LALIT NEW_PACK        NEW_PROC        PACKAGE

SQL>

Bây giờ, bạn có thể thấy procedure_name là thủ tục thực tế và object_name là package_name.

Tất nhiên, hầu hết trong các hệ thống sản xuất, chúng tôi sẽ có các gói chứ không phải các thủ tục riêng lẻ. Tuy nhiên, trong khi thử nghiệm và trình diễn, chúng tôi biên dịch và chạy các thủ tục độc lập. Vì vậy, rất tốt nếu biết cách Oracle duy trì thông tin trong các chế độ xem * _PROCEDURES .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi chuỗi được phân tách bằng dấu phẩy thành mảng trong PL / SQL

  2. Làm thế nào bạn có thể biết nếu một giá trị không phải là số trong Oracle?

  3. Làm thế nào để có được quý từ ngày trong Oracle?

  4. chuyển đổi đốm màu thành cục máu đông

  5. Tạo bảng từ một truy vấn bằng cách sử dụng một vùng bảng khác (Oracle SQL)