Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criando o pacote sqlplus


Quando você receber erros de compilação, você desejará ver quais erros você recebeu. No SQL*Plus, você pode fazer isso usando o 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

Os erros estão informando que o compilador pensa que a palavra-chave na linha 11, coluna 29 é um nome de coluna e que os nomes de coluna não são permitidos nesse ponto do seu código. A coluna 29 da linha 11 é o pl_loc identificador. Presumivelmente, você não pretendia que isso fosse uma referência a um nome de coluna. Presumivelmente, você pretendia que fosse o nome de um parâmetro. Mas o Oracle não reconhece esse identificador como parâmetro. Isso ocorre porque seu parâmetro se chama p_loc não pl_loc (observe o l extra ).

Se você corrigir o nome de todos os três parâmetros, o 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.