Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
クエリ内の XML 要素を生成します。
XMLELEMENT( { NAME element-name-expression } | string-expression [, XMLATTRIBUTES ( attribute-value-expression [ AS attribute-name ],... ) ] [, element-content-expression,... ] )
element-name-expression 識別子。各ローに対して、識別子と同じ名前を持った XML 要素が生成されます。
attribute-value-expression 要素の属性。このオプションの引数を使用すると、生成された要素に属性値を指定できます。この引数は、属性の名前と内容を指定します。カラム名が attribute-value-expression の場合、属性名はデフォルトでカラム名になります。属性名は、attribute-name 引数を指定することにより変更できます。
element-content-expression 要素の内容。任意の文字列式を指定できます。element-content-expression 引数は、無制限に指定でき、連結もできます。たとえば、次の SELECT 文は、値 <x>abcdef</x> を返します。
SELECT XMLELEMENT( NAME x, 'abc', 'def' );
XML
NULL の要素値と NULL の属性値は、結果から省かれます。要素名と属性名の大文字と小文字は、クエリから取得されます。
データ型が XML ではない場合、要素内容は必ずエスケープされます。無効な要素名と属性名も引用符で囲まれます。次の文を例にとります。
SELECT XMLELEMENT('H1', f_get_page_heading() );
関数 f_get_page_heading が RETURNS LONG VARCHAR または RETURNS VARCHAR(1000) と定義されている場合、結果は HTML でエンコーディングされます。
CREATE FUNCTION f_get_page_heading() RETURNS LONG VARCHAR BEGIN RETURN ('<B>My Heading</B>'); END;
上記の SELECT 文は次の値を返します。
<H1><B>My Heading</B></H1>
関数が RETURNS XML と宣言されている場合、上記の SELECT 文は次の値を返します。
<H1><B>My Heading</B></H1>
引用符と XMLELEMENT 関数の詳細については、無効な名前と SQL/XMLを参照してください。
XMLELEMENT 関数をネストして階層を作成できます。同じレベルのドキュメント階層で異なる要素を返したい場合に、XMLFOREST 関数を使用します。
詳細については、XMLFOREST 関数 [文字列]を参照してください。
XMLELEMENT 関数を含むクエリを実行すると、BINARY、LONG BINARY、IMAGE、VARBINARY の各カラムのデータは、自動的に base64 エンコード形式で返されます。
SQL/2008 XMLELEMENT は、オプションの SQL/2008 言語機能 X031 の一部です。NAME キーワードを省略し、第 1 引数に文字列式を使用することは、ベンダー拡張です。SQL Anywhere は、XMLELEMENT 関数でオプションの OPTION 句をサポートしていません。
次の例は、結果セットの各製品に対して <item_name> 要素を生成します。ここでは、製品名が要素の内容です。
SELECT ID, XMLELEMENT( NAME item_name, p.Name ) FROM Products p WHERE ID > 400;
次の例は、<A HREF="http://www.ianywhere.com/" TARGET="_top">iAnywhere web site</A> を返します。
<A HREF="http://www.ianywhere.com/" TARGET="_top">iAnywhere web site</A>
SELECT XMLELEMENT( 'A', XMLATTRIBUTES( 'http://www.ianywhere.com/' AS "HREF", '_top' AS "TARGET"), 'iAnywhere web site' );
次の例は、<table><tbody><tr align="center" valign="top"><td>Cell 1 info</td><td>Cell 2 info</td></tr></tbody></table> を返します。
<table><tbody><tr align="center" valign="top"><td>Cell 1 info</td><td>Cell 2 info</td></tr></tbody></table>
SELECT XMLELEMENT( name "table", XMLELEMENT( name "tbody", XMLELEMENT( name "tr", XMLATTRIBUTES('center' AS "align", 'top' AS "valign"), XMLELEMENT( name "td", 'Cell 1 info' ), XMLELEMENT( name "td", 'Cell 2 info' ) ) ) );
次の例は、'<x>abcdef</x>','<custom_element>abcdef</custom_element>' を返します。
'<x>abcdef</x>','<custom_element>abcdef</custom_element>'
CREATE VARIABLE @my_element_name VARCHAR(200); SET @my_element_name = 'custom_element'; SELECT XMLELEMENT( NAME x, 'abc', 'def' ), XMLELEMENT( @my_element_name,'abc', 'def' );