【问题标题】:Oracle 11G Multiple loop in through XML equals nodes in PL/SQLOracle 11G 通过 XML 的多次循环等于 PL/SQL 中的节点
【发布时间】:2017-09-16 08:13:48
【问题描述】:

我的 XML 看起来像这样。

 <mapaDatosUsuario>
           <item>
              <campo>pair1</campo>
              <valor>value1</valor>
           </item>
           <item>
              <campo>pair2</campo>
              <valor>value2</valor>
           </item>
           <item>
              <campo>pair3</campo>
              <valor>value3</valor>
           </item>
           <item>
              <campo>pair4</campo>
              <valor>value4</valor>
           </item>
           <item>
              <campo>pair5</campo>
              <valor>value5</valor>
           </item>
           <item>
              <campo>pair6</campo>
              <valor>value6</valor>
           </item>
           <item>
              <campo>pair7</campo>
              <valor>value7</valor>
           </item>
           <item>
              <campo>pair8</campo>
              <valor>value8</valor>
           </item>
           <item>
              <campo>pair9</campo>
              <valor>value9</valor>
           </item>
           <item>
              <campo>pair10</campo>
              <valor>value10</valor>
           </item>
           <item>
              <campo>pair11</campo>
              <valor>value11</valor>
           </item>
           <item>
              <campo>pair12</campo>
              <valor>value12</valor>
           </item>
        </mapaDatosUsuario>
        <mapaDatosUsuario>
           <item>
              <campo>pair1</campo>
              <valor>value1</valor>
           </item>
           <item>
              <campo>pair2</campo>
              <valor>value2</valor>
           </item>
           <item>
              <campo>pair3</campo>
              <valor>value3</valor>
           </item>
           <item>
              <campo>pair4</campo>
              <valor>value4</valor>
           </item>
           <item>
              <campo>pair5</campo>
              <valor>value5</valor>
           </item>
           <item>
              <campo>pair6</campo>
              <valor>value6</valor>
           </item>
           <item>
              <campo>pair7</campo>
              <valor>value7</valor>
           </item>
           <item>
              <campo>pair8</campo>
              <valor>value8</valor>
           </item>
           <item>
              <campo>pair9</campo>
              <valor>value9</valor>
           </item>
           <item>
              <campo>pair10</campo>
              <valor>value10</valor>
           </item>
           <item>
              <campo>pair11</campo>
              <valor>value11</valor>
           </item>
           <item>
              <campo>pair12</campo>
              <valor>value12</valor>
           </item>
        </mapaDatosUsuario>

我有一个表,我必须在其中存储一些带有列的 xml 节点 对1 对3 对5 对6 对7

但我只提取 mapaDatosUsuario 但我不知道如何提取其余的值

我能帮帮我吗

提前致谢!!

【问题讨论】:

    标签: xml oracle oracle11g


    【解决方案1】:
    SELECT *
    FROM   XMLTABLE(
             '//root/mapaDatosUsuario'
             PASSING XMLTYPE( '<root>' || your_xml || '</root>' )
             COLUMNS pair1 VARCHAR2(100) PATH './item/campo[text()="pair1"]/../valor/text()',
                     pair3 VARCHAR2(100) PATH './item/campo[text()="pair3"]/../valor/text()',
                     pair5 VARCHAR2(100) PATH './item/campo[text()="pair5"]/../valor/text()',
                     pair7 VARCHAR2(100) PATH './item/campo[text()="pair7"]/../valor/text()'
           );
    

    输出

    PAIR1      PAIR3      PAIR5      PAIR7    
    ---------- ---------- ---------- ----------
    value1     value3     value5     value7    
    value1     value3     value5     value7    
    

    或者,获取 XML 节点:

    SELECT *
    FROM   XMLTABLE(
             '//root/mapaDatosUsuario'
             PASSING XMLTYPE( '<root>' || your_xml || '</root>' )
             COLUMNS pair1 XMLTYPE PATH './item/campo[text()="pair1"]/..',
                     pair3 XMLTYPE PATH './item/campo[text()="pair3"]/..',
                     pair5 XMLTYPE PATH './item/campo[text()="pair5"]/..',
                     pair7 XMLTYPE PATH './item/campo[text()="pair7"]/..'
           );
    

    【讨论】:

    • 哇太棒了!非常感谢,我测试了第一个块并且运行良好!
    猜你喜欢
    • 2010-11-02
    • 2017-07-04
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多