本文介绍不同数据库下DBMS_XMLGEN函数的使用场景。

背景说明

Oracle支持DBDBMS_XMLGEN包及其函数对xml类型数据进行操作。
SQL> SELECT dbms_xmlgen.newcontext('select * from dbmgr.xmldemo') FROM dual;
DBMS_XMLGEN.NEWCONTEXT('SELECT*FROMDBMGR.XMLDEMO')
--------------------------------------------------
                                                 1
SQL> select dbms_xmlgen.getxml(1) from dual;
DBMS_XMLGEN.GETXML(1)
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
 <ROW>
  <A>10</A>
  <B>first line</B>
 </ROW>
 <

解决方案

虽然PolarDB O引擎不支持DBMS_XMLGEN包及其函数,但是PolarDB有提供XML相关函数,如xmlagg, xmlroot, xmlforest, xmlelement, xmlconcat,xmlcomment,您可以使用这些函数来实现类似功能。
 van=> SELECT xmlforest(a AS A, b AS B) from xmldemo;
         xmlforest          
---------------------------- 
<a>10</a><b>first line</b> 
<a>20</a><b>line 2</b>
(2 rows)

更多方法请参见https://www.postgresql.org/docs/11/functions-xml.html