本文介紹不同數據庫下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