sql >> Base de Datos >  >> RDS >> Oracle

Crear paquete sqlplus

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.