LƯU Ý Vui lòng xem phần CẬP NHẬT để biết câu trả lời chính xác.
Tên thủ tục không được viết thường trong dạng xem DBA_PROCEDURES. Sử dụng chữ hoa hoặc áp dụng hàm UPPER.
SELECT *
FROM SYS.DBA_PROCEDURES
WHERE procedure_name ='GG';
CẬP NHẬT
Trường hợp duy nhất khi bạn có thể đặt tên bằng chữ thường là nếu bạn đặt nó trong dấu ngoặc kép khi biên dịch.
Ví dụ:
SQL> CREATE OR REPLACE
2 PROCEDURE "p"
3 AS
4 BEGIN
5 NULL;
6 END;
7 /
Procedure created.
SQL> SELECT object_name, procedure_name, object_type FROM user_procedures where procedure_name='p';
no rows selected
SQL>
Nhưng vẫn ở chế độ xem trên sẽ không trả lại bất kỳ kết quả nào cho PROCEDURE_NAME .
Lý do
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 THỦ TỤC ALONE ĐỨNG bạn cần sử dụng OBJECT_NAME .
SQL> -- stand alone procedure in lower case
SQL> CREATE OR REPLACE
2 PROCEDURE "p"
3 AS
4 BEGIN
5 NULL;
6 END;
7 /
Procedure created.
SQL>
SQL> -- package
SQL> CREATE OR REPLACE
2 PACKAGE test_p
3 IS
4 PROCEDURE p;
5 END test_p;
6 /
Package created.
SQL>
SQL> -- package body with a procedure
SQL> CREATE OR REPLACE
2 PACKAGE BODY test_p
3 IS
4 PROCEDURE p
5 IS
6 BEGIN
7 NULL;
8 END;
9 END test_p;
10 /
Package body created.
SQL>
SQL> SELECT object_name, procedure_name, object_type FROM user_procedures;
OBJECT_NAME PROCEDURE_NAME OBJECT_TYPE
--------------- --------------- ---------------
TEST_P P PACKAGE
p PROCEDURE
TEST_P PACKAGE
SQL>
Vì vậy, như bạn có thể thấy, procedure_name
chỉ có package's procedure
, tuy nhiên, stand-alone procedure
chỉ được liệt kê trong object_name
.