XMLROW
XMLROW 関数は、整形式 XML 文書である XML 値を戻します。
.-,------------------------------------. V | >>-XMLROW--(----expression--+----------------------+-+----------> '-AS--qname-identifier-' >--+---------------------------------------+--)---------------->< | .---------------------------. | | V (1) .-ROW--"row"----. | | '-OPTION--------+-+-ROW--row-name-+-+-+-' '-AS ATTRIBUTES-----'
注:
- 同じ文節を複数回指定することはできません。
- 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> -