Når du får kompileringsfejl, vil du gerne se, hvilke fejl du har modtaget. I SQL*Plus kan du gøre det ved at bruge kommandoen 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
Fejlene fortæller dig, at compileren mener, at nøgleordet på linje 11, kolonne 29 er et kolonnenavn, og at kolonnenavne ikke er tilladt på det tidspunkt i din kode. Linje 11 kolonne 29 er pl_loc
identifikator. Det var formentlig ikke meningen, at det skulle være en henvisning til et kolonnenavn. Du har formentlig tænkt dig, at det skulle være navnet på en parameter. Men Oracle genkender ikke denne identifikator som parameteren. Dette skyldes, at din parameter hedder p_loc
ikke pl_loc
(bemærk den ekstra l
).
Hvis du retter navnet på alle tre parametre, kompileres koden
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.