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

Oracle PL SQL में किसी xml तत्व का मान प्राप्त करें

आपको लाइन बदलनी होगी

testr := DBMS_XMLDOM.getNodeName(n) || ' ' || DBMS_XMLDOM.getNodeValue(n);

करने के लिए

testr := DBMS_XMLDOM.getNodeName(n) || ' ' || DBMS_XMLDOM.getNodeValue(DBMS_XMLDOM.getFirstChild(n));

एक्सएमएल डोम में, तत्वों के पास बोलने के लिए कोई 'मान' नहीं है। एलिमेंट नोड्स में बच्चों के रूप में टेक्स्ट नोड्स होते हैं, और ये नोड्स होते हैं जिनमें वे मान होते हैं जो आप चाहते हैं।

संपादित करें (टोमालक की टिप्पणी के जवाब में):मुझे किसी तत्व के सभी बाल टेक्स्ट नोड्स का संयुक्त मूल्य प्राप्त करने के लिए डीबीएमएस_एक्सएमएलडीओएम में किसी भी फ़ंक्शन से अवगत नहीं है। यदि आपको यही चाहिए, तो आपको निम्न फ़ंक्शन की तरह कुछ उपयोग करने की आवश्यकता हो सकती है:

CREATE OR REPLACE FUNCTION f_get_text_content (
    p_node          DBMS_XMLDOM.DOMNode
) RETURN VARCHAR2
AS
  l_children        DBMS_XMLDOM.DOMNodeList;
  l_child           DBMS_XMLDOM.DOMNode;
  l_text_content    VARCHAR2(32767);
  l_length          INTEGER;
BEGIN
  l_children := DBMS_XMLDOM.GetChildNodes(p_node);
  l_length := DBMS_XMLDOM.GetLength(l_children);
  FOR i IN 0 .. l_length - 1 LOOP
    l_child := DBMS_XMLDOM.Item(l_children, i);
    IF DBMS_XMLDOM.GetNodeType(l_child) IN (DBMS_XMLDOM.TEXT_NODE, DBMS_XMLDOM.CDATA_SECTION_NODE) THEN
      l_text_content := l_text_content || DBMS_XMLDOM.GetNodeValue(l_child);
    END IF;
  END LOOP;
  RETURN l_text_content;
END f_get_text_content;
/


  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. अपरिचित विकल्प:-MaxMetaspaceSize=256m

  4. Oracle आइडेंटिटी क्लाउड सर्विस (IDCS) के साथ ServiceNow को एकीकृत करना

  5. कर्सर में मौजूद है जहां शर्त पूरी होती है