Oracle
 sql >> Base de données >  >> RDS >> Oracle

Création du paquet sqlplus

Lorsque vous obtenez des erreurs de compilation, vous voudrez voir quelles erreurs vous avez reçues. Dans SQL*Plus, vous pouvez le faire en utilisant la commande 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

Les erreurs vous indiquent que le compilateur pense que le mot clé à la ligne 11, colonne 29 est un nom de colonne et que les noms de colonne ne sont pas autorisés à ce stade de votre code. La ligne 11 colonne 29 est le pl_loc identifiant. Vraisemblablement, vous n'aviez pas l'intention que ce soit une référence à un nom de colonne. Vraisemblablement, vous vouliez que ce soit le nom d'un paramètre. Mais Oracle ne reconnaît pas cet identifiant comme paramètre. C'est parce que votre paramètre est nommé p_loc pas pl_loc (notez le l supplémentaire ).

Si vous corrigez le nom des trois paramètres, le code compile

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.