2011-08-18 13 views
17

में एम्पर्सेंड से बचें मैं ओरेकल डेटाबेस के खिलाफ एक सरल INSERT कथन का प्रयास कर रहा हूं। मानों में से एक VARCHAR2 फ़ील्ड है और सम्मिलित कथन में एक एम्पर्सेंड होता है। मैं यह कैसे करु?पीएल/एसक्यूएल डेवलपर

    भागने
  1. & के रूप में \ & पर
  2. सेट सेट से बच के साथ बंद स्कैन
  3. सेट बंद परिभाषित करते हैं ((यह एक ORA-00,922 य विकल्प त्रुटि होती है): मैं निम्न विधियों की कोशिश की है यह ओआरए -00 9 22 गायब या अमान्य विकल्प त्रुटि का कारण बनता है)

कोई अन्य विचार?

+3

मैंने इस प्रश्न में chr (38) समाधान का उपयोग करके इसे "हल" किया है: http://stackoverflow.com/questions/1137354/oracle-pl-sql-escape-character-for-a लेकिन कुछ चाहिए अधिक सुंदर –

+0

क्या आप SQL विंडो या कमांड विंडो के माध्यम से सम्मिलन निष्पादित करने का प्रयास कर रहे हैं? –

+0

रे, क्या आपने इसे पूरी तरह से बंद करने के बजाय किसी अन्य चरित्र को परिभाषित करने की कोशिश की है? सुनिश्चित नहीं है कि यह मदद करेगा क्योंकि मैं PLSQL डेवलपर का उपयोग नहीं करता लेकिन यह ... – Ollie

उत्तर

21

मैंने कैसे हल किया यह & से दूसरे & से बच रहा है।

उदाहरण के लिए:

INSERT INTO Foo (Bar) VALUES ('Up && Away'); 

अच्छी तरह से काम करता है। धन्यवाद सभी मदद

+0

वास्तव में, लेकिन सावधान रहें "&" "और" "plsqld मूल खोज और प्रतिस्थापन उपकरण के साथ" & "को प्रतिस्थापित न करें, क्योंकि यह एक अनंत लूप दर्ज कर सकता है। – roselan

+1

मेरे लिए नहीं ... मेरा समाधान जवाब था "... टेबलक्स मूल्यों में प्रवेश करें ('सिड' || 'और' || 'नैन्सी'); ..." –

+0

मेरे लिए भी काम नहीं किया। – th1rdey3

8

क्या आपने ऐसा कुछ करने की कोशिश की है?

INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy'); 

मेरे पहले उत्तर में सुधार, आपकी समस्या पीएल/एसक्यूएल डेवलपर से संबंधित है। यदि आप अपने ब्लॉक को पीएल/एसक्यूएल डेवलपर कमांड विंडो में निष्पादित करते हैं, तो आप मानक सेट डिफाईन ऑफ़ का भी उपयोग कर सकते हैं, जो एसक्यूएल * प्लस के समान काम करता है।

+0

मुझे नहीं लगता कि यह 'chr (38) 'समाधान रे उल्लेख से कहीं अधिक सुंदर है। – APC

+0

उचित रूप से, लेकिन यह एक ऐसा है जिसे मैंने एक साल पहले इसी तरह की समस्या का सामना किया था। Http://www.orafaq.com/wiki/SQL_FAQ में एसक्यूएल * प्लस, एसईटी एस्केप '\', सेट डेफिन ~ या सेट स्कैन ऑफ – Aitor

+1

में कुछ अच्छे समाधान भी हैं, अच्छे समाधान और वैश्विक सेटिंग्स के साथ झुकाव से अधिक सुखद । थोड़ा छोटा: 'सिड एंड' || 'नैन्सी'। –

12

पीएल/एसक्यूएल डेवलपर की विशेषताओं में से एक जो परिचित होने में समय लगता है, अलग-अलग विंडो प्रकारों की पर्याप्तता है।

इनमें से एक COMMAND विंडो है, जो मूल रूप से एक SQL * प्लस एमुलेटर है। हम एसक्यूएल * प्लस कमांड के साथ-साथ एसक्यूएल चला सकते हैं, इसलिए SET ESCAPE, SET DEFINE और वास्तव में SET SCAN OFF उस विंडो में काम कर सकते हैं।

4

के लिए concat नीचे मेरे लिए बिल्कुल ठीक काम किया है मैं अपने चयन बयान में क्या किया:

select FUND_NM 
FROM PERFORMANCE 
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS') 
2

मैं chr(38) जहाँ मैं PL/SQL में एक ampersand की जरूरत का उपयोग करें।

addr:= 'mysite.com/order.aspx?no=5678' || CHR(38) || 'id=947'; 
--above line gives you 'mysite.com/order.aspx?no=5678&id=947'; 
12

पीएल/एसक्यूएल डेवलपर (11.0.एक्स) के वर्तमान संस्करण में प्रतिस्थापन चर अक्षम/सक्षम करने के लिए एक बटन है।

enter image description here

+0

यह खोजना मुश्किल था। मैंने सेटिंग्स में सभी विकल्पों के माध्यम से ब्राउज़ करने में 10 मिनट बिताए और केवल तभी यह ऑनलाइन पाया। –

0

यह सिर्फ एक एसक्यूएल संपादक मुद्दा है। इसे हल करने के लिए बस सेट परिभाषा के साथ प्रक्रिया संकलित करें; । निष्पादन जो पीएल (सर्वर में निष्पादन) है इस मुद्दे का सामना नहीं करेगा।

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