हम Oracle 10g
और Oracle 11g
का उपयोग करते हैं।क्या एन फ़ंक्शन मौजूदा प्रश्नों के साथ समस्याएं पैदा कर सकता है?
हमारे पास .NET में लिखे गए छद्म-एसक्यूएल कोड से कुछ प्रश्नों को स्वचालित रूप से लिखने के लिए एक परत है (पायथन के लिए एसक्लाएल्मी जैसे कुछ)।
हमारे परत में एकल उद्धरण '
में किसी भी स्ट्रिंग लपेटता है और, अगर गैर एएनएसआई वर्ण हैं, यह स्वतः ही विशेष यूनिकोड बाइट (\00E0
की तरह) के रूप में लिखा पात्रों के साथ UNISTR
लिखें।
INSERT INTO ... (...) SELECT ... FROM DUAL UNION ALL SELECT ... FROM DUAL ...
इस एल्गोरिथ्म प्रश्नों जहां एक ही स्ट्रिंग क्षेत्र कभी कभी 'my simple string'
के रूप में पारित हो जाता है और कभी-कभी UNISTR('my string with special chars like \00E0')
के रूप में लिपटे रचना कर सकते हैं:
अब हम निम्नलिखित निर्माण के साथ अनेक निवेशन करने के लिए एक विधि बनाया।
वर्णित स्थिति ORA-12704: character set mismatch
का कारण बनती है।
एक समाधान INSERT ALL
निर्माण का उपयोग करना है, लेकिन यह है बहुत धीमी गति से अब इस्तेमाल किया एक की तुलना में।
एक और समाधान किसी भी स्ट्रिंग के सामने N
डालने के लिए हमारी परत को निर्देश देना है (UNISTR
के साथ पहले से लिपटे वाले लोगों को छोड़कर)। यह सरल है।
मैं सिर्फ यह जानना चाहता हूं कि इससे मौजूदा प्रश्नों पर कोई दुष्प्रभाव हो सकता है या नहीं।
नोट: डीबी पर हमारे सभी फ़ील्ड या तो NCHAR
या NVARCHAR2
हैं।
ओरेकल रेफरी: http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch7progrunicode.htm
यदि आप लक्षित कॉलम आकार को जानते हैं तो आप भी कलाकारों को डाला जा सकता है। या आपकी परत उचित थोक डालने तंत्र का समर्थन कर सकती है। लेकिन निश्चित रूप से 'एन' का उपयोग कर ... '' बस आपके डेटाबेस चरित्र से राष्ट्रीय चरित्र सेट पर डालने के दौरान शाब्दिक के दौरान शाब्दिक के एक अंतर्निहित रूपांतरण से बचाता है? –
@AlexPoole Sincerly, मुझे आपके प्रश्न को समझ में नहीं आता है ... – Teejay
प्रति कथन कितनी पंक्तियां डाली जा रही हैं? यदि 'INSERT ALL'' यूनियन ऑल 'से धीमा है, तो आप मेरे उत्तर [यहां] (http://stackoverflow.com/a/11663076/409172) में बताए गए अनुसार ओरेकल पार्सिंग समस्या में भाग ले रहे हैं। विशाल एसक्यूएल स्टेटमेंट के लंबे समय के समय से बचने के लिए 'INSERT ALL' को छोटे हिस्सों में तोड़ने के लिए पर्याप्त हो सकता है। –