शेल स्क्रिप्ट में अनाम ब्लॉक का संस्करण दिखाए गए अनुसार निष्पादित नहीं किया जाएगा, क्योंकि आपके पास इसे चलाने के लिए ब्लॉक के बाद एक स्लैश . यदि आप इसे चलाते हैं तो आपको कोई आउटपुट नहीं मिलता है। अगर आप इसे स्लैश करने के लिए बदलते हैं:
sqlplus -silent [email protected] <<EOF
set serveroutput on
declare
DE_REC_COUNT number(10);
begin
DE_DUP_PROC ('T_MCL_30404_20150317_020','MCL','30404','FT',DE_REC_COUNT);
end;
/
EOF
तब आप देखेंगे:
0
PL/SQL procedure successfully completed.
आपने बिना स्लैश के भी SQL*Plus में इंटरेक्टिव संस्करण दिखाया है, लेकिन आपके द्वारा दिखाए गए आउटपुट को देखने के लिए आपके पास वह होना चाहिए।
यदि आप शून्य चाहते हैं - जो एक dbms_output
. से आता हुआ प्रतीत होता है अपनी प्रक्रिया में कॉल करें, बजाय सीधे अपने अनाम ब्लॉक से - n एक शेल चर जिसे आप बाद में संदर्भित कर सकते हैं, आप हेरेडोक के आउटपुट को एक चर के लिए असाइन कर सकते हैं:
MY_VAR=`sqlplus -silent [email protected] <<EOF
set serveroutput on
set feedback off
declare
DE_REC_COUNT number(10);
begin
DE_DUP_PROC ('T_MCL_30404_20150317_020','MCL','30404','FT',DE_REC_COUNT);
end;
/
EOF`
printf "Got back MY_VAR as %s\n" ${MY_VAR}
ध्यान दें कि मैंने set feedback off
जोड़ा है इसलिए आपको PL/SQL procedure successfully completed
. दिखाई नहीं दे रही है रेखा। अब जब आप दौड़ेंगे तो आप देखेंगे:
Got back MY_VAR as 0
और आप ${MY_VAR}
. के साथ जो कुछ भी करना चाहते हैं वह कर सकते हैं . हालांकि यह निर्भर करता है कि 'कैप्चर' से आपका क्या मतलब है।