मैं एक SQL डेवलपर लाइनसाइज़ बग से परिचित नहीं हूं, इसलिए सुनिश्चित नहीं है कि अंतिम परिणाम क्या होना चाहिए। लेकिन आप sys_context
का इस्तेमाल कर सकते हैं
इसके लिए:
select sys_context('USERENV', 'MODULE') from dual;
जो देता है:
SYS_CONTEXT('USERENV','MODULE')
--------------------------------------------------------------------------------
SQL*Plus
... या:
SYS_CONTEXT('USERENV','MODULE')
-------------------------------
SQL Developer
इसलिए आपके पास जो है उसे आप इस तरह से अनुकूलित कर सकते हैं:
column set_the_line new_value targetlinesize noprint
set termout off
select case sys_context('USERENV', 'MODULE')
when 'SQL Developer' then 5 else 500 end as set_the_line from dual;
set termout on
set linesize &&targetlinesize
और फिर
. के साथ परीक्षण करेंshow linesize
जो linesize 500
. देता है एसक्यूएल*प्लस में और linesize 5
SQL डेवलपर में।
यदि आप अभी तक SQL*Plus में कनेक्ट नहीं हुए हैं, तो पहले मान को परिभाषित करें; select
. से त्रुटि छिपाने के लिए आपको कुछ विशेष करने की भी आवश्यकता नहीं है set termout off
. से परे , हालांकि आप एक whenever sqlerror
. शामिल कर सकते हैं बस आपके login.sql
. के मामले में इसे बाहर निकलने के लिए सेट कर रहा है - लेकिन फिर आपको इसे बाद में रीसेट करने के बारे में जानना होगा।
define targetlinesize=500
whenever sqlerror continue
set termout off
column set_the_line new_value targetlinesize noprint
select case sys_context('USERENV', 'MODULE')
when 'SQL Developer' then 5 else 500 end as set_the_line from dual;
set termout on
set linesize &&targetlinesize
show linesize
column
यदि चयन सफल होता है तो मान इसे ओवरराइड कर देगा, और यदि यह विफल रहता है तो इसे स्पर्श न करें। अगर मैं इसे client.sql
. नामक फ़ाइल में डालता हूं और इसे इस रूप में चलाएं:
sqlplus -s /nolog @client
मुझे केवल यह आउटपुट मिलता है:
linesize 500
और वही चीज़ SQL Developer में चलती है, जो linesize 5
. देती है फिर से।