आप RESTRICT_REFERENCES का उपयोग कर सकते हैं यह इंगित करने के लिए कि कोई फ़ंक्शन पैकेज या डेटाबेस स्थिति को पढ़/लिख नहीं पाएगा।
CREATE PACKAGE t_pkg AS
FUNCTION showup (msg VARCHAR2) RETURN VARCHAR2;
PRAGMA RESTRICT_REFERENCES(showup, WNDS, RNDS);
END t_pkg;
/
-- create the package body
CREATE OR REPLACE PACKAGE BODY t_pkg AS
FUNCTION showup (msg VARCHAR2) RETURN VARCHAR2 IS
v_val varchar2(1);
BEGIN
select dummy into v_val from dual;
RETURN v_val;
END;
END t_pkg;
/
ऐसा हुआ करता था कि SQL आपको तब तक किसी फ़ंक्शन को कॉल करने की अनुमति नहीं देता जब तक कि उसने ऐसा कोई वादा नहीं किया, लेकिन वह प्रतिबंध हटा दिया गया।
मैं इसे एक प्रक्रिया और एक समारोह के बीच एक विभेदक बनाना पसंद करूंगा। यह ध्यान में रखने योग्य है कि यदि कोई PL/SQL फ़ंक्शन NO_DATA_FOUND अपवाद उठाता है, तो कॉलिंग SQL कथन विफल नहीं होता है (क्योंकि कोई डेटा नहीं मिला है, SQL त्रुटि नहीं है)। इसलिए मैं प्रक्रियाओं का उपयोग करना पसंद करता हूं जब तक कि ऑब्जेक्ट को विशेष रूप से SQL से कॉल करने के लिए डिज़ाइन नहीं किया जाता है।