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;
/