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

Oracle PL/SQLプロシージャのエラー

    show errorsを使用して、パッケージからエラーを確認できます。 ステートメントの実行直後、またはselect * from user_errors where name = 'COLUMN_SEC_PACKAGE'

    パッケージ本体にENDがありません;関数用に1つありますが、パッケージ用にはありません:

    CREATE OR REPLACE package body COLUMN_SEC_PACKAGE is
      FUNCTION TEST_SEC( OWNER VARCHAR2, OBJNAME VARCHAR2) RETURN VARCHAR2 is
        v_SQL VARCHAR2(2000):='1=0';
      begin
        IF (SYS_CONTEXT('USERENV','SESSION_USER') ='VPD1') THEN
          v_SQL:=NULL;
        END IF;
        RETURN V_SQL;
      end;  -- end of function
    -- no end for the package
    /
    

    不足しているものを簡単に見つけられるように、各ポイントで終了するものを指定すると便利です。もちろん、インデントもそれを助けます。 /も表示していません パッケージ仕様の後、これは単にコピーアンドペーストの間違いである可能性があります。 /を使用して、両方のコマンドを実行する必要があります それぞれの後:

    CREATE OR REPLACE PACKAGE COLUMN_SEC_PACKAGE AS
      FUNCTION TEST_SEC (OWNER VARCHAR2, OBJNAME VARCHAR2) RETURN VARCHAR2;
    END COLUMN_SEC_PACKAGE;
    /
    CREATE OR REPLACE package body COLUMN_SEC_PACKAGE is
      FUNCTION TEST_SEC( OWNER VARCHAR2, OBJNAME VARCHAR2) RETURN VARCHAR2 is
        v_SQL VARCHAR2(2000):='1=0';
      begin
        IF (SYS_CONTEXT('USERENV','SESSION_USER') ='VPD1') THEN
          v_SQL:=NULL;
        END IF;
        RETURN V_SQL;
      end TEST_SEC;
    END COLUMN_SEC_PACKAGE;
    /
    



    1. 一致した配列要素を除外する

    2. 絶えず変化するデータに最適なストレージエンジン

    3. SQL Serverのフォーマット文字列とは何ですか?

    4. 非推奨のMySql関数