0

このようなテーブルにいくつかのデータがあります。

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>

SQL を使用してタグ名を動的に作成できなかったため、PL/SQL に頼らざるを得ませんでした。これは Oracle 11g の SQL メソッドを使用して可能ですか、それとも PL/SQL の方法を継続する必要がありますか?

ありがとう。

4

3 に答える 3

7

次のように実行できます。

select xmlelement("DATA",xmlagg( xmlelement(evalname(KEY), VAL)))
from my_table
where ID = 1

ここにsqlfiddleのデモがあります

于 2013-03-05T14:47:07.780 に答える
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;
于 2013-03-05T14:45:48.630 に答える
0

これを試してみてください

    SELECT xmlelement("Data",xmlelement("Name",name),
xmlelement("Age",age),
xmlelement("Gender",gender)) "xml_format"
      FROM emp_tab  where rownum=1;

説明があれば教えてください!

于 2013-03-05T15:13:56.660 に答える