sql >> Databáze >  >> RDS >> Oracle

Vytvoření balíčku sqlplus

Když se zobrazí chyby kompilace, budete chtít vidět, jaké chyby jste obdrželi. V SQL*Plus to můžete provést pomocí příkazu 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

Chyby vám říkají, že kompilátor si myslí, že klíčové slovo na řádku 11, sloupci 29 je název sloupce a že názvy sloupců nejsou v tomto bodě kódu povoleny. Řádek 11, sloupec 29 je pl_loc identifikátor. Pravděpodobně jste nezamýšleli, aby to byl odkaz na název sloupce. Pravděpodobně jste zamýšleli, aby to byl název parametru. Oracle však tento identifikátor jako parametr nerozpozná. Důvodem je, že váš parametr se jmenuje p_loc nikoli pl_loc (všimněte si navíc l ).

Pokud opravíte název všech tří parametrů, kód se zkompiluje

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. Jak získat seznam příspěvků a související značky s nejmenším počtem dotazů

  2. MySQL do PostgreSQL tabulky vytvořit konverzi - znaková sada a řazení

  3. SELECT minimální a maximální hodnotu z části tabulky v MySQL

  4. Existuje zkratka pro SELECT * FROM?