XMLType 连接相同 xml 标签的多个实例
XMLType Concat multiple instances of the same xml tag
我的出发点是这个问题:
现在,我有这个简单的例子:
DECLARE
l_head_xml XMLTYPE
:= xmltype.CREATEXML(
'<ord>
<head>
<ord_code>123</ord_code>
<ord_date>01-01-2015</ord_date>
</head>
</ord>');
l_pos_xml XMLTYPE
:= xmltype.CREATEXML(
'<pos>
<pos_code>456</pos_code>
<pos_desc>description</pos_desc>
</pos>');
l_complete_xml XMLTYPE;
BEGIN
FOR i IN 1 .. 2
LOOP
SELECT XMLELEMENT("MAIN_TAG",
XMLAGG(XMLCONCAT(l_head_xml, l_pos_xml)))
INTO l_complete_xml
FROM dual;
END LOOP;
dbms_output.put_line(l_complete_xml.getstringval());
END;
在我的例子中,我有一个循环获取这两个标签的多个实例:l_head_xml
和 l_pos_xml
。我的最终结果是这样的:
<MAIN_TAG>
<Item>
<ord>
<head>
<ord_code>123</ord_code>
<ord_date>01-01-2015</ord_date>
</head>
</ord>
<pos>
<pos_code>456</pos_code>
<pos_desc>description</pos_desc>
</pos>
</Item>
<Item>
<ord>
<head>
<ord_code>123</ord_code>
<ord_date>01-01-2015</ord_date>
</head>
</ord>
<pos>
<pos_code>456</pos_code>
<pos_desc>description</pos_desc>
</pos>
</Item>
</MAIN_TAG>
我该怎么做,使用 XML 类型函数(未弃用 - 我使用的是 Oracle 11g)并且不使用临时变量连接每个实例上的每个 XML 块。
在聚合之前使用子查询将记录相乘即可:
SELECT
XMLELEMENT ("MAIN_TAG", XMLAGG (XMLCONCAT (l_head_xml, l_pos_xml)))
INTO l_complete_xml
FROM
(SELECT DUMMY FROM DUAL CONNECT BY LEVEL <= 2);
我的出发点是这个问题:
现在,我有这个简单的例子:
DECLARE
l_head_xml XMLTYPE
:= xmltype.CREATEXML(
'<ord>
<head>
<ord_code>123</ord_code>
<ord_date>01-01-2015</ord_date>
</head>
</ord>');
l_pos_xml XMLTYPE
:= xmltype.CREATEXML(
'<pos>
<pos_code>456</pos_code>
<pos_desc>description</pos_desc>
</pos>');
l_complete_xml XMLTYPE;
BEGIN
FOR i IN 1 .. 2
LOOP
SELECT XMLELEMENT("MAIN_TAG",
XMLAGG(XMLCONCAT(l_head_xml, l_pos_xml)))
INTO l_complete_xml
FROM dual;
END LOOP;
dbms_output.put_line(l_complete_xml.getstringval());
END;
在我的例子中,我有一个循环获取这两个标签的多个实例:l_head_xml
和 l_pos_xml
。我的最终结果是这样的:
<MAIN_TAG>
<Item>
<ord>
<head>
<ord_code>123</ord_code>
<ord_date>01-01-2015</ord_date>
</head>
</ord>
<pos>
<pos_code>456</pos_code>
<pos_desc>description</pos_desc>
</pos>
</Item>
<Item>
<ord>
<head>
<ord_code>123</ord_code>
<ord_date>01-01-2015</ord_date>
</head>
</ord>
<pos>
<pos_code>456</pos_code>
<pos_desc>description</pos_desc>
</pos>
</Item>
</MAIN_TAG>
我该怎么做,使用 XML 类型函数(未弃用 - 我使用的是 Oracle 11g)并且不使用临时变量连接每个实例上的每个 XML 块。
在聚合之前使用子查询将记录相乘即可:
SELECT
XMLELEMENT ("MAIN_TAG", XMLAGG (XMLCONCAT (l_head_xml, l_pos_xml)))
INTO l_complete_xml
FROM
(SELECT DUMMY FROM DUAL CONNECT BY LEVEL <= 2);