U kunt de fout van het pakket zien met show errors
onmiddellijk na het uitvoeren van de instructie, of met select * from user_errors where name = 'COLUMN_SEC_PACKAGE'
.
Uw pakkettekst mist een END
; je hebt er een voor de functie, maar niet voor het pakket:
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
/
Het is handig om op elk punt aan te geven wat u wilt beëindigen, zodat u gemakkelijk kunt zien wat er ontbreekt; inspringen helpt dat natuurlijk ook. Je hebt ook geen /
. getoond na de pakketspecificatie, wat misschien een kopieer- en plakfout is. Je moet beide commando's uitvoeren, met een /
na elk:
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;
/