Khi gặp lỗi biên dịch, bạn sẽ muốn xem mình đã nhận được lỗi nào. Trong SQL * Plus, bạn có thể làm điều đó bằng cách sử dụng lệnh show errors
SQL> create or replace package body fpf
2 as
3 procedure insert_rows
4 (p_deptno IN dept.deptno%TYPE,
5 p_dname IN dept.dname%TYPE,
6 p_loc IN dept.loc%TYPE)
7 as
8 BEGIN
9 INSERT INTO dept
10 (deptno,dname,loc)
11 values ( pl_deptno,pl_dname,pl_loc);
12 end insert_rows;
13 end fpf;
14 /
Warning: Package Body created with compilation errors.
SQL> sho err
Errors for PACKAGE BODY FPF:
LINE/COL ERROR
-------- -----------------------------------------------------------------
9/1 PL/SQL: SQL Statement ignored
11/29 PL/SQL: ORA-00984: column not allowed here
Các lỗi cho bạn biết rằng trình biên dịch nghĩ rằng từ khóa ở dòng 11, cột 29 là tên cột và tên cột đó không được phép tại thời điểm đó trong mã của bạn. Dòng 11 cột 29 là pl_loc
định danh. Có lẽ, bạn không có ý định đó là tham chiếu đến tên cột. Có lẽ, bạn dự định đó là tên của một tham số. Nhưng Oracle không nhận dạng đó là tham số. Điều này là do tham số của bạn được đặt tên là p_loc
không phải pl_loc
(lưu ý thêm l
).
Nếu bạn sửa tên của cả ba tham số, mã sẽ biên dịch
Wrote file afiedt.buf
1 create or replace package body fpf
2 as
3 procedure insert_rows
4 (p_deptno IN dept.deptno%TYPE,
5 p_dname IN dept.dname%TYPE,
6 p_loc IN dept.loc%TYPE)
7 as
8 BEGIN
9 INSERT INTO dept
10 (deptno,dname,loc)
11 values ( p_deptno,p_dname,p_loc);
12 end insert_rows;
13* end fpf;
SQL> /
Package body created.