Du kan se fejlen fra pakken ved hjælp af show errors
umiddelbart efter udførelse af sætningen, eller med select * from user_errors where name = 'COLUMN_SEC_PACKAGE'
.
Din pakketekst mangler en END
; du har en til funktionen, men ikke til pakken:
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
/
Det er nyttigt at specificere, hvad du slutter på hvert punkt, så du nemt kan udvælge, hvad der mangler; Indrykning hjælper selvfølgelig også på det. Du har heller ikke vist en /
efter pakkespecifikationen, som måske bare er en copy-and-paste fejl. Du skal køre begge kommandoer med en /
efter hver:
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;
/