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

XMLAgg/XMLElement का उपयोग करते समय बफ़र बहुत छोटी त्रुटि

एकत्रीकरण समस्या नहीं है; त्रुटि तब आ रही है जब आप अपने द्वारा छोड़े गए अनुगामी अल्पविराम को ट्रिम करने का प्रयास करते हैं।

आपको अपने XMLAgg परिणाम का एक अंतर्निहित रूपांतरण मिल रहा है, जो एक XMLType ऑब्जेक्ट है, varchar2 में; और जब इसकी लंबाई 4000 वर्णों से अधिक हो जाती है तो आपको यह त्रुटि मिलेगी क्योंकि यह SQL में varchar2 मान की अधिकतम लंबाई है (कम से कम, Oracle 12c तक)।

rtrim() . को कॉल करने से पहले आपको स्पष्ट रूप से CLOB के रूप में मान प्राप्त करने की आवश्यकता है , getclobval() . का उपयोग करके :

select Rtrim(
  (Xmlagg(Xmlelement(e,wonum||',')).extract('//text()')).getclobval(),
    ',') as wolist
from ( select w.wonum from workorder w  
  connect by prior w.wonum = w.parent and prior w.siteid = siteid 
  start with w.siteid =  'ABCD' and w.wonum = 'P1234' );

आप अपने स्वयं के समग्र कार्य को भी परिभाषित कर सकते हैं। जो एक CLOB लौटा सकता है और 4000 से अधिक वर्णों को संभाल सकता है; जिसे तब listagg() . जैसा और अधिक कहा जा सकता है , एक्सएमएल वर्कअराउंड के बिना।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल एसक्यूएल स्क्रिप्ट स्पूल फाइल कैसे बनाएं

  2. Oracle SQL में एकाधिक पंक्ति सम्मिलित करें

  3. एसक्यूएल डेवलपर में एक टेबल बनाते समय त्रुटि ORA-00907 हो रही है

  4. ORACLE RAW स्ट्रिंग प्रारूप में मानक GUID के लिए

  5. Oracle में पैकेज का उपयोग करने के पेशेवरों और विपक्ष