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 名前空間仕様を参照してください。
属性名を
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 = 12EMPNO 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>
