sql >> データベース >  >> RDS >> Oracle

OraclePLSQLのxml要素の値を取得します

    行を変更する必要があります

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

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

    XML DOMでは、要素には話す「値」がありません。要素ノードには子としてテキストノードが含まれ、必要な値が含まれるのはこれらのノードです。

    編集(Tomalakのコメントへの応答):要素のすべての子テキストノードの結合された値を取得するDBMS_XMLDOMの関数を認識していません。それが必要な場合は、次の関数のようなものを使用する必要があるかもしれません:

    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. DataGripを使用してSSH経由でデータベースに接続する方法

    2. ノードjsを使用してjson出力をmysqlに挿入する方法

    3. デフォルトの日付形式を変更するlaravelsqlクエリ

    4. ZendFrameworkとMysql-非常に遅い