XMLATTRIBUTES スカラー関数
XMLATTRIBUTES 関数は、引数から XML 属性を構成します。
スキーマは SYSIBM です。 関数名を修飾名で指定することはできません。
この関数は、XMLELEMENT 関数の引数としてのみ使用できます。 結果は、それぞれの非 NULL 入力値の XQuery 属性ノードを含む XML シーケンスになります。
- 属性値式 (attribute-value-expression)
- 結果が属性値になる式。 attribute-value-expression のデータ・タイプを XML タイプ、BINARY タイプ、VARBINARY タイプ、または構造化タイプにすることはできません (SQLSTATE 42884)。 式には任意の SQL 式を指定できます。 式が単純な列参照でない場合、属性名を指定する必要があります。 attribute-name
- 属性名を指定します。 この名前は SQL ID であり、XML 修飾名の形式かまたは QName でなければなりません (SQLSTATE 42634)。 有効な名前の詳細については、 W3C XML namespace specifications を参照してください。 属性名は、
xmlns
にしたり、名前の前にxmlns:
を付けたりすることはできません。 名前空間は、関数 XMLNAMESPACES を使って宣言します。 重複した属性名を (暗黙的、明示的にかかわらず) 使用することはできません (SQLSTATE 42713)。attribute-name が指定されない場合、attribute-value-expression は列名でなければなりません (SQLSTATE 42703)。 属性名は、列名から XML 属性名への完全にエスケープしたマッピングを使用する列名から作成されます。
結果のデータ・タイプは XML です。 attribute-value-expression の結果が NULL になる可能性がある場合は、結果も NULL になる可能性があります。attribute-value-expression の結果がすべて NULL であれば、結果も NULL 値になります。
例
注: XMLATTRIBUTES は、出力にブランク・スペースや改行文字を挿入しません。 例の出力はすべて、読みやすくするために書式を整えています。
- 例 1: エレメント、およびその属性を生成します。
この照会は、次のような結果を生成します。SELECT E.EMPNO, XMLELEMENT( NAME "Emp", XMLATTRIBUTES( E.EMPNO, E.FIRSTNME ||' '|| E.LASTNAME AS "name" ) ) AS "Result" FROM EMPLOYEE E WHERE E.EDLEVEL = 12
EMPNO Result 000290 <Emp EMPNO="000290" name="JOHN PARKER"></Emp> 000310 <Emp EMPNO="000310" name="MAUDE SETRIGHT"></Emp> 200310 <Emp EMPNO="200310" name="MICHELLE SPRINGER"></Emp>
- 例 2: エレメント、および QName で使用されない名前空間宣言を生成します。 属性値には接頭部が使用されます。
この照会は、次のような結果を生成します。VALUES XMLELEMENT( NAME "size", XMLNAMESPACES( 'http://www.w3.org/2001/XMLSchema-instance' AS "xsi", 'http://www.w3.org/2001/XMLSchema' AS "xsd" ), XMLATTRIBUTES( 'xsd:string' AS "xsi:type" ), '1' )
<size xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">1</size>