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


Web oracle.se-free.com
属性名を指定してレコード別にXMLtypeインスタンスを出力する1( XMLATTRIBUTES、XMLELEMENT )
スポンサード リンク

属性名を指定してレコード別にXMLtypeインスタンスを出力するには、XMLATTRIBUTES関数、XMLELEMENT関数を使用します。

SELECT
 XMLELEMENT(
   XMLATTRIBUTES
( 項目1,項目2,・・・ ) )
FROM 表

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

XMLATTRIBUTESの引数には、XML要素の属性にする項目を指定します。
※XMLType型は、XML文書をCLOB型に格納したものなので、クライアント側でSELECTしたらCLOBデータとして操作します。


サンプル表「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  xmlelement( emp,
  3   xmlattributes( emp_id as id, emp_name as name ))
  4 from emp;

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

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



例2) 表「emp 」にselect結果をXMLで出力します。XMLFORSETを使用して子要素も生成してます。

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

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

<EMP ID="E01"><NAME>なまえ1</NAME><SAL>150</SAL></EMP>
<EMP ID="E02"><NAME>なまえ2</NAME><SAL>200</SAL></EMP>
<EMP ID="E03"><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へ