sql >> Database >  >> RDS >> Oracle

Pakket sqlplus maken

Wanneer u compilatiefouten krijgt, wilt u zien welke fouten u hebt ontvangen. In SQL*Plus kunt u dat doen met het commando 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

De fouten vertellen u dat de compiler denkt dat het sleutelwoord op regel 11, kolom 29 een kolomnaam is en dat kolomnamen op dat punt in uw code niet zijn toegestaan. Regel 11 kolom 29 is de pl_loc identificatie. Vermoedelijk was het niet je bedoeling dat dit een verwijzing naar een kolomnaam was. Vermoedelijk bedoelde u dat als de naam van een parameter. Maar Oracle herkent die identifier niet als de parameter. Dit komt omdat uw parameter de naam p_loc heeft niet pl_loc (let op de extra l ).

Als je de naam van alle drie de parameters corrigeert, compileert de code

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.



  1. Records bijwerken en invoegen in Oracle-tabel met OracleDataAdapter van DataTable

  2. Wat is een databank? Definitie, typen en componenten

  3. In mysql tonen de databases; commando geeft niet al mijn databases weer

  4. Een time-out voor een mysql++-query in c++