XMLROW

XMLROW 関数は、整形式 XML 文書である XML 値を戻します。

構文図を読む構文図をスキップする
              .-,------------------------------------.   
              V                                      |   
>>-XMLROW--(----expression--+----------------------+-+---------->
                            '-AS--qname-identifier-'     

>--+---------------------------------------+--)----------------><
   |         .---------------------------. |      
   |         V  (1)  .-ROW--"row"----.   | |      
   '-OPTION--------+-+-ROW--row-name-+-+-+-'      
                   '-AS ATTRIBUTES-----'          

注:
  1. 同じ文節を複数回指定することはできません。
expression
各 XML エレメントの内容を式で指定します。 expression のデータ・タイプは、ROWID または DATALINK、あるいは ROWID または DATALINK に基づく特殊タイプ以外であってはなりません。AS ATTRIBUTES を指定する場合、expression のデータ・タイプは、XML、または XML に基づく特殊タイプ以外でなければなりません。式として、SQL 式を指定することもできます。式が単純な列参照でない場合は、エレメント名を指定する必要があります。
AS qname-identifier
XML の要素名または属性名を SQL ID として指定します。 qname-identifier は、XML 修飾名 (つまり QName) の形式でなければなりません。有効な名前についての詳細は、W3C XML ネーム・スペースの指定の項目を参照してください。名前を修飾する場合は、有効範囲内にネーム・スペース接頭部が宣言されている必要があります。qname-identifier を指定しない場合は、expression を列名にする必要があります。エレメント名または属性名は、列名から QName への完全エスケープ・マッピングを使用して、列名から作成されます。
OPTION
XML 値を構成するための追加オプションを指定します。OPTION 文節を指定しない場合は、デフォルトの動作が適用されます。
ROW row-name
各行に対応付ける要素の名前を指定します。 このオプションを指定しない場合のデフォルトの要素名は、「row」です。
AS ATTRIBUTES
それぞれの式を属性値に対応付けることを指定します。属性名としての役割を果たすのは、列名または qname-identifier です。AS ATTRIBUTES は、式の結果のデータ・タイプが XML の場合には指定できません。

結果は、NULL 以外の入力 XML 値を連結したものを含む XML シーケンスです。

この関数の結果は XML 値です。入力の中の NULL 値は無視されます。いずれかの expression の結果が NULL になる可能性がある場合は、結果も NULL になる可能性があります。すべての expression の結果が NULL の場合は、結果は NULL 値になります。

デフォルトで、結果セットの各行は次のように XML 値にマップされます。
  • 各行は「row」という名前を持つ XML エレメントに変換され、各 expression はネストされたエレメントに変換されます。その際、エレメント名として列名または qname-identifier が使用されます。
  • NULL 処理の動作は NULL ON NULL です。サブエレメントが存在しないという状態に、式の NULL 値が対応付けられます。すべての式の値が NULL の場合、この関数によって NULL 値が戻されます。
  • バイナリー・データ・タイプと FOR BIT DATA データ・タイプのバイナリー・コード化スキームは、base64Binary エンコード方式です。

表 T1 に列 C1 と C2 があるとします。

 C1    C2
----  ----
  1     2
  -     2
  1     -
  -     -
  • 以下の例は、XMLROW 照会と、デフォルト動作による出力断片を示しています。表を表すために一連の行エレメントがその中で使用されています。
      SELECT XMLROW(C1, C2) FROM T1    
    <row><C1>1</C1><C2>2</C2></row>
    <row><C2>2</C2></row>
    <row><C1>1</C1></row>
    -
  • 以下の例は、XMLROW 照会と、属性を中心としたマッピングによる出力断片を示しています。データはネストされたエレメントとして表示されず、エレメント属性にマップされています。
      SELECT XMLROW(C1, C2 OPTION AS ATTRIBUTES) FROM T1    
    <row C1="1" C2="2"/>
    <row C2="2"/>
    <row C1="1"/>
    -
  • 以下の例は、XMLROW 照会と、デフォルト <row> エレメントが <entry> によって置き換えられた出力断片を示しています。列 C1 と C2 が <column1> および <column2> エレメントとしても戻され、C1 と C2 の合計が <total> エレメント内に戻されます。
      SELECT XMLROW(C1 AS "column1", C2 AS "column2",
                   C1+C2 AS "total" OPTION ROW "entry") FROM T1    
    <entry><column1>1</column1><column2>2</column2><total>3</total></entry>
    <entry><column2>2</column2></entry>
    <entry><column1>1</column1></entry>
    -