XMLAGG
功能描述
将多行数据转换为一个XML类型的值。
语法格式
XMLAGG((XMLELEMENT ( xmlname, xml_attributes, xmlvalue )))
xml_attributes ::= XMLATTRIBUTES ( xml_attribute_list )
xml_attribute_list ::= ( { xml_attribute } [ , ... ] )
xml_attribute ::= val AS name | ident
参数说明
xmlname
:XML的标签名。xml_attributes
:属性值,由XMLATTRIBUTES函数生成,为可选项。xmlvalue
:节点值,为可选项。[ , ... ]
:表示可以有多个xml_attribute
,每个属性之间用逗号分隔。val AS name
:指定一个属性,其中val
是属性值name
是属性名称。ident
:直接使用列名或表达式作为属性名称和属性值。
函数返回类型
CHAR类型。
示例
使用XMLAGG函数将多行数据聚合成一个XML元素,并通过 ORDER BY子句对结果进行排序。
sql
SQL> CREATE TABLE test_xmlagg(id INT,name VARCHAR,addr VARCHAR,age INT);
SQL> INSERT INTO test_xmlagg VALUES(1,'aa','street 01',11);
SQL> INSERT INTO test_xmlagg VALUES(2,'bb','street 01',12);
-- ORDER BY age
SQL> SELECT XMLAGG(XMLELEMENT("person",t.name || ' ' || t.addr)) AS person_info FROM test_xmlagg t ORDER BY t.age;
person_info |
------------------------------------------------------------------------------
<person>aa street 01</person>person>bb street 01</person>|
-- ORDER BY age DESC
SQL> SELECT XMLAGG(XMLELEMENT("person",t.name || ' ' || t.addr)) AS person_info FROM test_xmlagg t ORDER BY t.age DESC;
person_info |
------------------------------------------------------------------------------
<person>aa street 01</person>person>bb street 01</person>|