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


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

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

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

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

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

要素名=”column”、属性名=”項目名”として出力されます。
※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  xmlcolattval( emp_id, salary )
  3 from emp;

XMLCOLATTVAL(EMP_ID,SALARY)
-----------------------------------------------------------------------------

<column name = "EMP_ID">E01 </column><column name = "SALARY">150</column>
<column name = "EMP_ID">E02 </column><column name = "SALARY">200</column>
<column name = "EMP_ID">E03 </column><column name = "SALARY"></column>


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


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

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

XMLCOLATTVAL(EMP_IDASID,SALARYASSAL)
-------------------------------------------------------------------------

<column name = "ID">E01 </column><column name = "SAL">150</column>
<column name = "ID">E02 </column><column name = "SAL">200</column>
<column name = "ID">E03 </column><column name = "SAL"></column>



スポンサード リンク


レコード別に整形式の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へ