2008-09-22 14 views
88

मेरे पास एक SQL स्क्रिप्ट है जो एक एम्पर्सेंड() वाली टिप्पणी के साथ एक पैकेज बनाता है। जब मैं SQL प्लस से स्क्रिप्ट चलाता हूं, तो मुझे & से शुरू होने वाली स्ट्रिंग के लिए एक विकल्प मान दर्ज करने के लिए कहा जाता है। मैं इस सुविधा को कैसे अक्षम करूं ताकि एसक्यूएल प्लस एम्पर्सेंड को अनदेखा कर सके?मैं SQL प्लस से चल रहे SQL स्क्रिप्ट में एम्पर्सेंड को कैसे अनदेखा कर सकता हूं?

उत्तर

144

यह आप के लिए काम कर सकते हैं:

set define off 

अन्यथा एम्परसेंड एक स्ट्रिंग के अंत में होने की जरूरत है,

'StackOverflow &' || ' you' 

संपादित करें: मैं क्लिक खुश जब बचत था ... इस blog से संदर्भित किया गया था।

+2

आप इसे glogin.sql साइट प्रोफ़ाइल सेटअप फ़ाइल या login.sql उपयोगकर्ता प्रोफ़ाइल सेटअप फ़ाइल में भी निर्दिष्ट कर सकते हैं –

+0

यदि आप प्रतिस्थापन चर में रुचि नहीं रखते हैं तो यह सबसे आसान समाधान है। – Drumbeg

2

this nice FAQ के अनुसार कुछ समाधान हैं।

यदि आप टिप्पणी को संशोधित कर सकते हैं तो आप बैकस्लैश वर्ण \ के साथ एम्परसैंड से बचने में भी सक्षम हो सकते हैं।

+2

बैकस्लैश एस्केप एसक्यूएल * प्लस या एसक्यूएल डेवलपर –

+0

@JimTough में काम नहीं करता है यह –

21

यदि आप कभी-कभी प्रतिस्थापन चर का उपयोग करते हैं तो आप परिभाषित नहीं करना चाहते हैं। इन मामलों में आप एम्पर्सेंड को इसके अंकीय समकक्ष से || Chr(38) || में परिवर्तित कर सकते हैं या इसे || '&' || में एक वर्ण के रूप में जोड़ सकते हैं।

+0

पर सेट से बचने के बाद करता है विशिष्ट परिदृश्य एक पैकेज है जिसका स्रोत एक टिप्पणी में एम्पर्सेंड शामिल है। मैं नहीं देखता कि मैं इसके लिए concatenation या प्रतिस्थापन का उपयोग कैसे करेंगे। – JoshL

+0

जोशेल, आप सही हैं मैंने इसे पूर्णता के लिए सूचीबद्ध किया है। यह आपके प्रश्न से संबंधित है भले ही यह सीधे आपके विशिष्ट प्रश्न का उत्तर नहीं देता है। –

+0

यह वास्तव में मेरी मदद की। –

8

मैं नीचे दिए गए कोड के साथ हल:

set escape on 

और बाईं 'value_\&_intert'

Att में & के बगल में एक \ डाल

+0

यह मेरे लिए काम किया। मैं कॉलम tablename.columnname पर 'कमांड' टिप्पणी कमांड का उपयोग कर रहा था || सीआर (38) || 'शांति' लेकिन यह मुझे त्रुटि 'ओआरए -01780: स्ट्रिंग अक्षर आवश्यक' दे रहा था। – mrswadge

4

आप विशेष वर्ण, जो निष्पादन पर के लिए देखा जाता है सेट कर सकते हैं SET DEFINE <1_CHARACTER>

डिफ़ॉल्ट रूप से, डीएफआईआई का उपयोग करने के माध्यम से एक अन्य मूल्य के लिए, एक स्क्रिप्ट का NE समारोह पर ही है, और यह &

यह बंद किया जा सकता करने के लिए सेट है - पहले ही उल्लेख के रूप में - लेकिन यह एक अलग मान पर यह स्थापित करने के माध्यम से रूप में अच्छी तरह से बचा जा सकता है। इस बात से अवगत रहें कि आपने इसे किस संकेत पर सेट किया है। नीचे दिए गए उदाहरण में, मैंने # वर्ण चुना है, लेकिन यह विकल्प सिर्फ एक उदाहरण है।

SQL> select '&var_ampersand #var_hash' from dual; 
Enter value for var_ampersand: a value 

'AVALUE#VAR_HASH' 
----------------- 
a value #var_hash 

SQL> set define # 
SQL> r 
    1* select '&var_ampersand #var_hash' from dual 
Enter value for var_hash: another value 

'&VAR_AMPERSANDANOTHERVALUE' 
---------------------------- 
&var_ampersand another value 

SQL> 
+0

मैंने हाल ही में इस दृष्टिकोण का उपयोग किया है। मुझे यह पसंद है क्योंकि मुझे मेरे पीएल/एसक्यूएल पैकेज की सामग्री को बदलने की आवश्यकता नहीं है। – Drumbeg

3

सेट < बंद को परिभाषित - यह सबसे अच्छा समाधान मैं

मैं भी कोशिश की पाया है ...

सेट को परिभाषित}

मैं कई एम्परसेंड वर्ण युक्त रिकॉर्ड सम्मिलित करने में सक्षम था '&' लेकिन मैं '0' वर्ण को टेक्स्ट में उपयोग नहीं कर सकता, इसलिए मैंने "सेट डिफाईन ऑफ" का उपयोग करने का निर्णय लिया और सबकुछ इसके जैसा काम करता है।

संबंधित मुद्दे