如何在Oracle中将动态行数据转换为XML?

Mri*_*lla 0 sql oracle oracle11g

我在表中有一些看起来像这样的数据.

ID     KEY       VAL
----   -----    -----
1      name     Bob
1      age      30
1      gender   male
2      name     Susan
2      age      50
Run Code Online (Sandbox Code Playgroud)

可以获取此查询的输出:

SELECT *
  FROM my_table
 WHERE id = 1;
Run Code Online (Sandbox Code Playgroud)

..在这样的XML格式:

<DATA>
  <NAME>Bob</NAME>
  <AGE>30></AGE>
  <GENDER>MALE</MALE>
</DATA>
Run Code Online (Sandbox Code Playgroud)

我不得不求助于PL/SQL,因为我无法使用SQL动态构建标记名称?这可能是使用SQL方法Oracle 11g还是我必须继续PL/SQL方式?

谢谢.

A.B*_*ade 7

你可以这样做:

select xmlelement("DATA",xmlagg( xmlelement(evalname(KEY), VAL)))
from my_table
where ID = 1
Run Code Online (Sandbox Code Playgroud)

这是一个sqlfiddle演示