我在表格中有一些看起来像这样的数据。
ID KEY VAL
---- ----- -----
1 name Bob
1 age 30
1 gender male
2 name Susan
2 age 50
可以获得此查询的输出:
SELECT *
FROM my_table
WHERE id = 1;
..使用这样的XML格式:
<DATA>
<NAME>Bob</NAME>
<AGE>30></AGE>
<GENDER>MALE</MALE>
</DATA>
我不得不求助于PL / SQL,因为我无法使用SQL动态构建标记名称?这可能是使用SQL方法Oracle 11g还是我必须继续PL / SQL方式?
感谢。
答案 0 :(得分:7)
你可以这样做:
select xmlelement("DATA",xmlagg( xmlelement(evalname(KEY), VAL)))
from my_table
where ID = 1
答案 1 :(得分:0)
您应该可以使用纯SQL执行此操作:
select XMLELEMENT("DATA",
XMLELEMENT("NAME", n.val),
XMLELEMENT("AGE", a.val),
XMLELEMENT("GENDER", g.val))
from my_table n
inner join my_table a on n.id = a.id
inner join my_table g on n.id = g.id
where n.key = "name"
and a.key = "age"
and g.key = "gender"
and n.id = 1;
答案 2 :(得分:0)
试试这个
SELECT xmlelement("Data",xmlelement("Name",name),
xmlelement("Age",age),
xmlelement("Gender",gender)) "xml_format"
FROM emp_tab where rownum=1;
任何澄清请告诉我!