Když se zobrazí chyby kompilace, budete chtít vidět, jaké chyby jste obdrželi. V SQL*Plus to můžete provést pomocí příkazu 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
Chyby vám říkají, že kompilátor si myslí, že klíčové slovo na řádku 11, sloupci 29 je název sloupce a že názvy sloupců nejsou v tomto bodě kódu povoleny. Řádek 11, sloupec 29 je pl_loc
identifikátor. Pravděpodobně jste nezamýšleli, aby to byl odkaz na název sloupce. Pravděpodobně jste zamýšleli, aby to byl název parametru. Oracle však tento identifikátor jako parametr nerozpozná. Důvodem je, že váš parametr se jmenuje p_loc
nikoli pl_loc
(všimněte si navíc l
).
Pokud opravíte název všech tří parametrů, kód se zkompiluje
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.