sql >> データベース >  >> RDS >> Oracle

パッケージ sqlplus の作成

    コンパイル エラーが発生した場合、受け取ったエラーを確認する必要があります。 SQL*Plus では、コマンド 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
    

    エラーは、11 行目の 29 列目のキーワードが列名であるとコンパイラが認識し、コードのその時点で列名が許可されていないことを示しています。行 11 列 29 は pl_loc です 識別子。おそらく、それを列名への参照にするつもりはなかったでしょう。おそらく、それをパラメーターの名前にするつもりでした。しかし、Oracle はその識別子をパラメーターとして認識しません。これは、パラメータの名前が p_loc であるためです pl_loc ではありません (余分な l に注意してください ).

    3 つのパラメーターすべての名前を修正すると、コードはコンパイルされます

    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. ジオロケーションSQLクエリが正確な場所を見つけられない

    2. Hibernateエンティティの特定のフィールドのクエリを設定する

    3. Spatialite / mysqlは3Dポイントをサポートしていますか?

    4. OracleDatabaseのJOIN構文を使用したUPDATE