XMLGROUP

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

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

>--+---------------------------------------------+-------------->
   |           .-,-----------------------------. |   
   |           V                      .-ASC--. | |   
   '-ORDER BY----sort-key-expression--+------+-+-'   
                                      '-DESC-'       

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

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

XMLGROUP 関数を含むステートメントの実行時に *HEX 以外の照合順序が有効で、しかもソート・キー式 が SBCS データ、混合データ、または Unicode データの場合、結果は重み付けされた値の比較によって求められます。この重み付けされた値は、ソート・キー式 に照合順序を適用して得られます。

この関数の結果は XML です。結果が、NULL になることもあります。値の集合が空である場合は、結果は NULL 値です。それ以外の場合、結果はそのセット内のそれぞれの値ごとに 1 つの項目を含む XML シーケンスです。

デフォルトの動作では、結果セットと XML 値の簡単な対応付けを定義するだけですが、関数の動作に当てはまる追加の注意点を以下にまとめます。
  • デフォルトでは、各行が「row」という名前の XML エレメントに変換され、各 expression が、ネストされたエレメントに変換されます (列名または qname-identifier がエレメント名になります)。
  • NULL 処理の動作は、NULL ON NULL です。サブエレメントが存在しないという状態に、式の NULL 値が対応付けられます。すべての式値が NULL であれば、行のエレメントは生成されません。行のエレメントが生成されなければ、関数から NULL 値が返されます。
  • バイナリー・データ・タイプと FOR BIT DATA データ・タイプのバイナリー・コード化スキームは、base64Binary エンコード方式です。
  • ルート・エレメントに組み込まれる行のサブエレメントの順序は、照会の結果セットで返される行の順序と同じです。

注: XMLGROUP は、出力に空白スペースや改行文字を挿入しません。読みやすくするために、すべての出力例はフォーマット設定されています。

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

 C1    C2
----  ----
  1     2
  -     2
  1     -
  -     -
  • デフォルトの動作で実行する XMLGROUP 照会と出力断片の例を示します。1 つの最上位エレメントが表に対応しています。
    SELECT XMLGROUP(C1, C2) FROM T1   
    単一の結果行に以下の値を戻します。
    <rowset>
    <row><C1>1</C1><C2>2</C2></row>
    <row><C2>2</C2></row>
    <row><C1>1</C1></row>
    </rowset>
  • 属性中心の対応付けを指定して実行する XMLGROUP 照会と出力断片の例を以下に示します。前の例では、ネストされたエレメントとしてデータを表示しましたが、この例では、データをエレメントの属性に対応付けます。
    SELECT XMLGROUP(C1, C2 OPTION AS ATTRIBUTES) FROM T1   
    単一の結果行に以下の値を戻します。
    <rowset>
    <row C1="1" C2="2"/>
    <row C2="2"/>
    <row C1="1"/>
    </rowset>
  • デフォルトの <rowset> ルート・エレメントを <document> に置き換え、デフォルトの <row> エレメントを <entry> に置き換えて実行する XMLGROUP 照会と出力断片の例を以下に示します。<column1> エレメントと <column2> エレメントとして列 C1 と C2 を返し、列 C1 を基準にして戻り値のセットを配列します。
    SELECT XMLGROUP(C1 AS "column1", C2 AS "column2"
                    ORDER BY C1 OPTION ROW "entry" ROOT "document")
           FROM T1
    単一の結果行に以下の値を戻します。
    <document>
    <entry> <column1>1</column1><column2>2</column2></entry>
    <entry> <column1>1</column1></entry>
    <entry> <column2>2</column2></entry>
    </document>