Cuando obtenga errores de compilación, querrá ver qué errores recibió. En SQL*Plus, puede hacerlo usando el comando 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
Los errores le indican que el compilador cree que la palabra clave en la línea 11, columna 29 es un nombre de columna y que los nombres de columna no están permitidos en ese punto de su código. La columna 29 de la línea 11 es el pl_loc
identificador Presumiblemente, no tenía la intención de que fuera una referencia a un nombre de columna. Presumiblemente, pretendía que ese fuera el nombre de un parámetro. Pero Oracle no reconoce ese identificador como parámetro. Esto se debe a que su parámetro se llama p_loc
no pl_loc
(tenga en cuenta el l
adicional ).
Si corrige el nombre de los tres parámetros, el código compila
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.