डिफ़ॉल्ट मान केवल तभी उपयोग किए जाते हैं जब तर्क निर्दिष्ट नहीं होते हैं। आपके मामले में आपने किया तर्क निर्दिष्ट करें - दोनों को NULL के मान के साथ आपूर्ति की गई थी। (हां, इस मामले में NULL को वास्तविक मान :-) माना जाता है। कोशिश करें:
EXEC TEST()
साझा करें और आनंद लें।
परिशिष्ट :प्रक्रिया मापदंडों के लिए डिफ़ॉल्ट मान निश्चित रूप से कहीं न कहीं एक सिस्टम टेबल में दबे होते हैं (देखें SYS.ALL_ARGUMENTS
देखें), लेकिन दृश्य से डिफ़ॉल्ट मान प्राप्त करने में एक लंबे फ़ील्ड से टेक्स्ट निकालना शामिल है, और शायद यह इसके लायक होने से अधिक दर्दनाक साबित होने जा रहा है। आसान प्रक्रिया में कुछ कोड जोड़ने का तरीका है:
CREATE OR REPLACE PROCEDURE TEST(X IN VARCHAR2 DEFAULT 'P',
Y IN NUMBER DEFAULT 1)
AS
varX VARCHAR2(32767) := NVL(X, 'P');
varY NUMBER := NVL(Y, 1);
BEGIN
DBMS_OUTPUT.PUT_LINE('X=' || varX || ' -- ' || 'Y=' || varY);
END TEST;