आप show errors
. का उपयोग करके पैकेज से एरर देख सकते हैं कथन निष्पादित करने के तुरंत बाद, या select * from user_errors where name = 'COLUMN_SEC_PACKAGE'
।
आपके पैकेज के मुख्य भाग में END
का अभाव है; आपके पास फ़ंक्शन के लिए एक है लेकिन पैकेज के लिए नहीं:
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;
/