Bạn có thể thấy lỗi từ gói bằng cách sử dụng show errors
ngay sau khi thực hiện câu lệnh hoặc với select * from user_errors where name = 'COLUMN_SEC_PACKAGE'
.
Nội dung gói của bạn thiếu END
; bạn có một cái cho hàm nhưng không cho gói:
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
/
Sẽ rất hữu ích nếu chỉ rõ những gì bạn đang kết thúc tại mỗi thời điểm để bạn có thể dễ dàng chọn ra những gì còn thiếu; thụt lề cũng giúp điều đó tất nhiên. Bạn cũng chưa hiển thị /
sau đặc điểm kỹ thuật gói, đó có thể chỉ là một lỗi sao chép và dán. Bạn cần chạy cả hai lệnh, với /
sau mỗi:
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;
/