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

Oprettelse af pakke sqlplus

Når du får kompileringsfejl, vil du gerne se, hvilke fejl du har modtaget. I SQL*Plus kan du gøre det ved at bruge kommandoen 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

Fejlene fortæller dig, at compileren mener, at nøgleordet på linje 11, kolonne 29 er et kolonnenavn, og at kolonnenavne ikke er tilladt på det tidspunkt i din kode. Linje 11 kolonne 29 er pl_loc identifikator. Det var formentlig ikke meningen, at det skulle være en henvisning til et kolonnenavn. Du har formentlig tænkt dig, at det skulle være navnet på en parameter. Men Oracle genkender ikke denne identifikator som parameteren. Dette skyldes, at din parameter hedder p_loc ikke pl_loc (bemærk den ekstra l ).

Hvis du retter navnet på alle tre parametre, kompileres koden

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. Tidsstempel interval

  2. Knee-Jerk Vent-statistikker:PAGEIOLATCH_SH

  3. Hvilken version af .Net framework leveres med SQL Server 2008?

  4. MySQL samtidighed, hvordan virker det og skal jeg håndtere det i min ansøgning