Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

मेरी एसक्यूएल स्क्रिप्ट कैसे निर्धारित कर सकती है कि यह एसक्लडेवलपर या एसक्लप्लस में चल रही है या नहीं?

मैं एक 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 . देती है फिर से।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:बल्क कलेक्ट प्रदर्शन

  2. Oracle में PL SQL ब्लॉक कैसे निष्पादित करें

  3. EM13c . में अलर्ट लॉग फ़िल्टर करना

  4. Oracle में VARCHAR(MAX) बनाम VARCHAR(n)

  5. Oracle और SQL सर्वर के बीच रिक्त स्थान को संभालने का अंतर