将长XQuery表达式分解为多个较小的行

时间:2018-04-22 14:00:33

标签: oracle xquery-sql

我在xmlTable中使用XQuery从XML中提取一些元素并将结果放在一行中。这是简化的工作示例:

 WITH xml AS (
     SELECT xmlType('
     <elements>
         <element attr="1">text 1</element>
         <element attr="2">text 2</element>
         <!--  a dozen other elements   -->
         <element attr="N">text N</element>
     </elements>'
     ) doc
     FROM dual)
 SELECT line
 FROM xml CROSS JOIN xmlTable ('
 let $ret :=
     <line> 
          {$doc/elements/element[@attr="1"]},{$doc/elements/element[@attr="2"]},{$doc/elements/element[@attr="N"]}
     </line>
 return $ret' PASSING xml.doc AS "doc"
 COLUMNS line varchar2(4000) PATH '/line'
 );

LINE
----------------------------------------
text 1,text 2,text N

但是包装标签line中的表达式确实很长(超过二十几个元素)。

有多种方法可以在多条较小的线条中打破这条长线?所以它看起来像这样:

<line>
    {$doc/elements/element[@attr="1"]},
    {$doc/elements/element[@attr="2"]},
    {$doc/elements/element[@attr="N"]}
</line>

0 个答案:

没有答案