Oracle支持带有evalname功能的动态XMLElement名称。 postgres中是否有类似的功能来动态获取XMLElement名称而不是使用常量?
ORACLE中的示例:
select xmlelement(evalname(ENAME),EMPNO) from EMP;
此语句将导致enames列表为单独的xml元素。
<SMITH>7369</SMITH>
<ALLEN>7499</ALLEN>
<WARD>7521</WARD>
不确定postgres是否有类似的东西。
感谢。
答案 0 :(得分:2)
我能够使用执行格式在Postgres中使用动态元素名称构造xml。发布此信息以防万一有人遇到同样的问题。
execute format('SELECT XMLElement(NAME %I, $1)', emp_name) USING empno from emp;
<SMITH>7369</SMITH>
<ALLEN>7499</ALLEN>
与XMLForest相同,并且在XMLElement中包含XMLAttributes。
答案 1 :(得分:0)
据我所知,没有这样的功能。
最接近的是添加一个带有empname的属性:
select xmlelement(name emp, xmlattributes(empname), empno)
from emp;
生成:
<emp empname="Smith">7369</emp>
<emp empname="Allend">7499</emp>
<emp empname="Ward">7521</emp>
就个人而言,我会发现格式很多更容易解析,例如在XSLT或XML解析器中。因为为了处理标签,您需要知道标签名称,如果标签每行都更改,则不需要这样做 - 但这可能就是我。