Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ORA-01704:स्ट्रिंग शाब्दिक बहुत लंबा 'Oracle XMLTYPE कॉलम प्रकार में XML दस्तावेज़ सम्मिलित करते समय त्रुटि'

मेरा अनुमान है कि आप एक्सएमएल को सम्मिलित कथन के लिए एक शाब्दिक के रूप में पास कर रहे हैं। 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 के बाहर है (और मेरी जानकारी के बाहर)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे करें:Grails 3.0.2 + Oracle डाटाबेस 12c?

  2. सबक्वेरी में अंतर दृश्यता शामिल हों और कहाँ

  3. क्या मैं एक्सेल में बाहरी डेटाबेस कनेक्शन के लिए पासवर्ड पास करने के लिए वीबीए का उपयोग कर सकता हूं?

  4. अलग चुनें (तारीख) एक ही तारीख को कई बार लौटाएं

  5. Oracle PL/SQL में सबमिट किए गए कार्य के समाप्त होने की प्रतीक्षा कर रहा है?