XMLROW スカラー関数

XMLROW 関数は、XQuery 文書ノードを 1 つ持つ XML 値を戻します。 これには最上位エレメント・ノードが 1 つ含まれています。

Read syntax diagramSkip visual syntax diagramXMLROW( ,expressionASqname-identifier OPTION1ROW "row"ROWrow-nameAS ATTRIBUTES)
Notes:
  • 1 The same clause must not be specified more than once.

スキーマは SYSIBM です。 関数名を修飾名で指定することはできません。

expression
生成される各 XML エレメント・ノードの内容を式によって指定します。 式のデータ・タイプを BINARY タイプ、VARBINARY タイプ、または構造化タイプにすることはできません (SQLSTATE 42884)。 式には任意の SQL 式を指定できます。 式が単純な列参照でない場合、エレメント名を指定する必要があります。
AS qname-ID
SQL ID として XML エレメント名または属性名を指定します。 qname-identifier は、XML 修飾名の形式であるかまたは QName でなければなりません (SQLSTATE 42634)。 有効な名前の詳細は、「W3C の XML 名前空間仕様」を参照してください。 名前が修飾される場合は、名前空間の接頭部をその有効範囲内で宣言する必要があります (SQLSTATE 42635)。 qname-identifier が指定されない場合、 expression は列名でなければなりません (SQLSTATE 42703)。 エレメント名または属性名は、列名から QName への完全にエスケープしたマッピングを使用する列名から作成されます。
OPTION
XML 値を構成するための追加オプションを指定します。 OPTION 節を指定しない場合、デフォルトの動作が適用されます。
AS 属性
各式を列名または qname-identifier (属性名としての役割を果たす) を使用して属性値にマップすることを指定します。
ROW 行名
各行のマップ先のエレメントの名前を指定します。 オプションが指定されない場合のデフォルトのエレメント名は "row" です。

デフォルトで、結果セットの各行は次のように XML 値にマップされます。

  • 各行は "row" という名前を持つ XML エレメントに変換され、各列はネストされたエレメントに変換されます。その際、エレメント名として列名が使用されます。
  • ヌル処理の動作は NULL ON NULL です。 列の値が NULL の場合、そのマップ先のサブエレメントは空になります。 すべての列の値が NULL の場合、関数によって NULL 値が戻されます。
  • BLOB および FOR BIT DATA データ・タイプのバイナリー・コード化スキームは base64Binary エンコードです。
  • XML の結果を、単一ルートを持つ整形式 XML 文書とするために、文書ノードが暗黙的に行エレメントに追加されます。

列 C1 および C2 を持つ次のような表 T1 があるとします。列にはリレーショナル形式で格納された数値データが入っています。
C1          C2
----------- -----------
          1           2
          -           2
          1           -
          -           -

  4 record(s) selected.
  • 例 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>
    
      4 record(s) selected.
  • 例 2: 以下の例は、XMLRow 照会と属性を中心としたマッピングによる出力断片を示しています。 リレーショナル・データは前例のようにネストされたエレメントとして現れておらず、エレメント属性にマップされています。
    SELECT XMLROW(C1, C2 OPTION AS ATTRIBUTES) FROM T1
    <row C1="1" C2="2"/>
    <row C2="2"/>
    <row C1="1"/>
    
      4 record(s) selected.
  • 例 3: 以下の例は、デフォルトの <row> エレメントを <entry> に置き換える、XMLRow 照会とその出力を示しています。列 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>
    
      4 record(s) selected.