ORACLE SQL リファレンス(逆引き)


Web oracle.se-free.com
レコード別にXMLtypeインスタンスを出力する2( XMLFOREST )
スポンサード リンク

レコード別にXMLtypeインスタンスを出力するには、XMLFOREST関数を使用します。

SELECT
 XMLFOREST
( 項目1,項目2,・・・ )
FROM 表

SELECTの結果をXMLtypeインスタンスで返します。

SELECT対象が全項目でも、「*」の指定はできません。

NULLの項目はXML要素が出力されません。
※XMLType型は、XML文書をCLOB型に格納したものなので、クライアント側でSELECTしたらCLOBデータとして操作します。

 XMLELEMENTとの違いは、項目名が、そのまま要素名になります。

サンプル表「EMP」のデータ

SQL> SELECT * FROM EMP;

EMP_ID DEPT_ID EMP_NAME SALARY
-----  -----  --------- ----------
E01    D01    なまえ1    150
E02    D02    なまえ2    300
E03    D03    なまえ3     



例1) 表「emp 」にselect結果をXMLで出力します。

SQL> select
  2  xmlforest( emp_id, emp_name, salary )
  3 from emp;

XMLFOREST(EMP_ID,EMP_NAME,SALARY)
-----------------------------------------------------------------------

<EMP_ID>E01 </EMP_ID>
<EMP_NAME>なまえ1</EMP_NAME>
<SALARY>150</SALARY>

<EMP_ID>E02 </EMP_ID>
<EMP_NAME>なまえ2</EMP_NAME>
<SALARY>300</SALARY>

<EMP_ID>E03 </EMP_ID>
<EMP_NAME>なまえ3</EMP_NAME>


 ※最後のレコードは、SALARY=NULLなので、SALARY要素は出力されません。


例2) 表「emp 」にselect結果をエイリアスを指定してXMLで出力します。

SQL> select
  2  xmlforest( emp_id as id, emp_name as name, salary as sal )
  3 from emp;

XMLFOREST(EMP_IDASID,EMP_NAMEASNAME,SALARYASSAL)
------------------------------------------------------------------------

<ID>E01 </ID>
<NAME>なまえ1</NAME>
<SAL>150</SAL>

<ID>E02 </ID>
<NAME>なまえ2</NAME>
<SAL>200</SAL>

<ID>E03 </ID>
<NAME>なまえ3</NAME>




例3) 表「emp 」にselect結果をXMLで出力します。XMLELEMENTを使用して親要素を生成してます。

SQL> select
2 xmlelement(emp,
3 xmlforest(emp_id as id,emp_name as name))
4 from emp;

XMLELEMENT(EMP,XMLFOREST(EMP_IDASID,EMP_NAMEASNAME))
--------------------------------------------------------------------

<EMP><ID>E01 </ID><NAME>なまえ1</NAME></EMP>
<EMP><ID>E02 </ID><NAME>なまえ2</NAME></EMP>
<EMP><ID>E03 </ID><NAME>なまえ3</NAME></EMP>



スポンサード リンク


レコード別に整形式のXMLtypeインスタンスを出力する( SYS_XMLGEN )
複数レコードを1レコードにまとめて整形式のXMLtypeインスタンスを出力する( SYS_XMLAGG、SYS_XMLGEN )
レコード別にXMLtypeインスタンスを出力する1( XMLCONCAT、XMLELEMENT )
レコード別にXMLtypeインスタンスを出力する2( XMLFOREST )
複数レコードを1レコードにまとめてXMLtypeインスタンスを出力する( XMLAGG、XMLELEMENT )
属性名を指定してレコード別にXMLtypeインスタンスを出力する1( XMLATTRIBUTES、XMLELEMENT )
属性名を指定してレコード別にXMLtypeインスタンスを出力する2( XMLCOLATTVAL )

SQL(DML2) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ