मेरा अनुमान है कि आप एक्सएमएल को सम्मिलित कथन के लिए एक शाब्दिक के रूप में पास कर रहे हैं। Oracle का SQL एक शाब्दिक में केवल 4000 वर्णों तक ही संभाल सकता है। अन्यथा आपको बाइंड वेरिएबल्स का उपयोग करने और इसे विखंडू में पास करने की आवश्यकता है। या आप पीएल/एसक्यूएल का उपयोग कर सकते हैं।
उदाहरण के लिए, यह बिना किसी समस्या के काम करना चाहिए क्योंकि शाब्दिक
<MyMessage>Meeesaaagee</MyMessage>
केवल 34 वर्ण हैं:
CREATE TABLE TEST_REPORTS
(
ID NUMBER,
DESCRIPTION VARCHAR2 (50),
XML XMLTYPE NULL
);
INSERT INTO TEST_REPORTS (ID, DESCRIPTION, XML)
VALUES (1, 'BLAH BLAH', XMLTYPE.CREATEXML ('<MyMessage>Meeesaaagee</MyMessage>'));
COMMIT;
लेकिन अगर आपके पास:मीसाआगे (+ 3976 अतिरिक्त वर्ण)
आपको ORA-01704 मिलेगा:स्ट्रिंग शाब्दिक बहुत लंबी त्रुटि।
आप कोशिश कर सकते हैं:
DECLARE
in_xml_value varchar2(32767);
BEGIN
in_xml_value := '<MyMessage>MeeesaaageeBLAHBLAHBLAH<--repeat--></MyMessage>';
INSERT INTO TEST_REPORTS (ID, DESCRIPTION, XML)
VALUES (1, 'BLAH BLAH', XMLTYPE.CREATEXML (in_xml_value);
commit;
END;
/
इसे पीएल/एसक्यूएल कोड के साथ करें और बाइंड वेरिएबल्स का उपयोग करने के लिए, आपको एक एप्लिकेशन डेवलपर से बात करनी होगी। यह Oracle के बाहर है (और मेरी जानकारी के बाहर)।