2012-12-19 15 views
21

मैं एक क्षेत्र है कि डेटा प्रकार CLOB पर 4000 से अधिक अक्षर का मान सेट करने की कोशिश है, यह मुझे इस त्रुटि देता है:त्रुटि: ORA-01704: स्ट्रिंग शाब्दिक बहुत लंबा

ORA-01704: स्ट्रिंग शाब्दिक बहुत लंबा।

कोई भी सुझाव है, अगर मैं असीमित पात्रों का मान सेट करने हालांकि मेरे मामले के लिए, यह 15000 के बारे में वर्ण का होता है जो डेटा प्रकार मेरे लिए लागू होंगे।

नोट: मैं जिस लंबी स्ट्रिंग को स्टोर करने की कोशिश कर रहा हूं वह एएनएसआई में एन्कोड किया गया है।

उत्तर

36

सीएलओबी के साथ काम करते समय आप क्या उपयोग कर रहे हैं?

Insert into table (clob_column) values (to_clob('chunk 1') || to_clob('chunk 2')); 

यह:

सभी घटनाओं में आप क्वेरी की तरह नीचे दिए गए कई टुकड़ों में विभाजित है और पात्रों की कोशिश करने PL/SQL के साथ यह कर सकते हैं

DECLARE 
    str varchar2(32767); 
BEGIN 
    str := 'Very-very-...-very-very-very-very-very-very long string value'; 
    update t1 set col1 = str; 
END; 
/

Proof link on SQLFiddle

+0

धन्यवाद, लेकिन सीआई इन प्रक्रिया सामग्री का समर्थन नहीं कर रहा है http://stackoverflow.com/questions/13946641/error-this-feature-is-not-available-for-the-database-you-are-using# टिप्पणी 1 9 32329_13946641 – hsuk

+0

मुझे लगता है कि आप इस कोड को एक प्रक्रिया में लपेट सकते हैं और कोडिनेटर इसे निष्पादित कर सकता है। क्षमा करें, लेकिन मेरे पास जांच के लिए कोडनिर्देशक नहीं है। यहां देखें [लिंक] (http://stackoverflow.com/a/7930092/1910242) – knagaev

+0

क्या किया, लेकिन क्या मैं वर्कर 2 के आकार को परिभाषित कर सकता हूं, इस लिंक को जांचें, http://stackoverflow.com/questions/13947222/error -ओरा-06553-pls-306-गलत-संख्या-या-प्रकार-तर्क-इन-कॉल-टू-प्रोसेस/13947420 # 13947420 – hsuk

14

कोशिश मेरे लिए काम किया

1

आपके द्वारा डालने वाले वर्णों के आधार पर 4000 वर्णों तक विभाजित कार्य। यदि आप विशेष वर्ण डाल रहे हैं तो यह असफल हो सकता है। एक चरणीय घोषित करने का एकमात्र सुरक्षित तरीका है।

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