यदि आपको दूसरे और तीसरे तर्कों की आवश्यकता नहीं है, तो आप उन्हें तर्कों के बजाय प्रक्रिया में चर के रूप में घोषित कर सकते हैं:
CREATE OR REPLACE PROCEDURE DDPAY_SP(DONOR_ID IN DD_DONOR.IDDONOR%TYPE,
RET OUT BOOLEAN)
IS
nPayment_count NUMBER;
BEGIN
SELECT COUNT(*)
INTO nPayment_count
FROM DD_PLEDGE p
WHERE p.IDDONOR = DONOR_ID AND
p.IDSTATUS = 10 AND
p.PAYMONTHS > 0;
IF nPayment_count > 0 THEN
RET := TRUE;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('DD_PAY - exception: ' || SQLCODE || ' : ' || SQLERRM);
RAISE;
END DDPAY_SP;
मैंने DD_PAY के अंत में एक EXCEPTION हैंडलर का उदाहरण शामिल किया है। कम से कम इस न्यूनतम हैंडलर को शामिल करना हमेशा एक अच्छा विचार है ताकि अपवाद होने की स्थिति में आपको कुछ संकेत मिल जाए कि समस्या कहां है।
चूंकि यह प्रक्रिया एक बूलियन मान लौटाती है, और बूलियन (मेरी सर्वोत्तम जानकारी के अनुसार) SQL*प्लस से उपयोग नहीं किए जा सकते हैं, आपको इसे PL/SQL ब्लॉक से निम्नानुसार लागू करना होगा:
DECLARE
bRetval BOOLEAN;
BEGIN
DD_PAY(308, bRetval);
DBMS_OUTPUT.PUT_LINE('Returned value is ' ||
CASE bRetval
WHEN TRUE THEN 'TRUE'
ELSE 'FALSE'
END);
END;
इसे आज़माएं।
संपादित करें:बाद की टिप्पणियों से अधिक जानकारी के आधार पर प्रक्रिया को फिर से लिखें।
साझा करें और आनंद लें।