Oracle
 sql >> Database >  >> RDS >> Oracle

Creazione del pacchetto sqlplus

Quando ricevi errori di compilazione, vorrai vedere quali errori hai ricevuto. In SQL*Plus, puoi farlo usando il 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

Gli errori ti stanno dicendo che il compilatore pensa che la parola chiave alla riga 11, colonna 29 sia un nome di colonna e che i nomi di colonna non siano consentiti a quel punto nel codice. Riga 11 colonna 29 è il pl_loc identificatore. Presumibilmente, non intendevi che fosse un riferimento al nome di una colonna. Presumibilmente, intendevi che fosse il nome di un parametro. Ma Oracle non riconosce quell'identificatore come parametro. Questo perché il tuo parametro si chiama p_loc non pl_loc (notare l'extra l ).

Se correggi il nome di tutti e tre i parametri, il codice viene compilato

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.