sql >> Databasteknik >  >> RDS >> Oracle

Skapar paketet sqlplus

När du får kompileringsfel vill du se vilka fel du fick. I SQL*Plus kan du göra det med kommandot 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

Felen talar om för dig att kompilatorn tror att nyckelordet på rad 11, kolumn 29 är ett kolumnnamn och att kolumnnamn inte är tillåtna vid den punkten i din kod. Rad 11 kolumn 29 är pl_loc identifierare. Förmodligen hade du inte tänkt att det skulle vara en referens till ett kolumnnamn. Du tänkte antagligen att det skulle vara namnet på en parameter. Men Oracle känner inte igen den identifieraren som parametern. Detta beror på att din parameter heter p_loc inte pl_loc (notera den extra l ).

Om du korrigerar namnet på alla tre parametrarna kompileras 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. PHP-konstant inte definierad

  2. Postgresql localhost-anslutning - Anslutning nekades

  3. Behöver trimma tomt utrymme i oracle

  4. Rails:Postgres tillstånd nekad att skapa databas på rake db:create:all