सीधे सवाल का जवाब नहीं देना - मुझे नहीं पता कि व्यवहार अलग क्यों है या किसी क्वेरी से फ़ंक्शन को कॉल करते समय इसे कैसे बदला जाए, इसके अलावा column
चीजों को थोड़ा सरल करने के लिए यहां एक उपनाम का उपयोग करके चौड़ाई निर्धारित करने का आदेश:
set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;
लेकिन आप फ़ंक्शन को अलग-अलग कॉल करके अपने इच्छित आउटपुट को भी प्राप्त कर सकते हैं; एक चर और एक अनाम ब्लॉक के साथ (या execute
आशुलिपि के रूप में):
variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc
ठीक है, लगभग जैसा आप चाहते हैं; आउटपुट की पहली पंक्ति फ़ंक्शन/पैरामीटर सूची के बजाय चर नाम है; लेकिन कर्सर कॉलम लपेटे नहीं गए हैं:
anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5
------------------------- ------- ---------- ---------- ----------
18-NOV-14 text some_data1 some_data2 some_data3
आप अपने फ़ंक्शन को कोड संपादक (वर्कशीट के बजाय) से भी चला सकते हैं, जो आपके लिए एक अनाम ब्लॉक उत्पन्न करता है; जब आप रन एरो (या हिट कंट्रोल-F10) पर क्लिक करते हैं तो आपको इस तरह का डायलॉग मिलता है:
और इसे चलाने के बाद आपको मुख्य विंडो के नीचे एक 'आउटपुट वैरिएबल' टैब मिलता है जो ग्रिड में कर्सर आउटपुट दिखाता है।
जब आप select my_function(...) from dual
. चलाते हैं तो आप ग्रिड दृश्य भी देख सकते हैं . कर्सर सामान्य 'क्वेरी परिणाम' विंडो में जाता है, लेकिन बहुत अनुकूल रूप में नहीं, कुछ इस तरह दिखाई देता है:
{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}
लेकिन यदि आप किसी मान पर डबल-क्लिक करते हैं तो आपको कॉलम के सबसे दूर दाईं ओर एक पीले रंग की पेंसिल का प्रतीक दिखाई देता है, और उस पर क्लिक करने से वह कर्सर अपने ग्रिड में दिखाई देता है।
व्यक्तिगत रूप से मैं print
पसंद करता हूं स्क्रिप्ट आउटपुट में विकल्प लेकिन मैं वैसे भी शायद ही कभी गर्ड डिस्प्ले का उपयोग करता हूं।