Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 関数 » SQL 関数 (P ~ Z)

 

XMLELEMENT 関数 [文字列]

クエリ内の 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>&lt;B&gt;My Heading&lt;/B&gt;</H1>

関数が RETURNS XML と宣言されている場合、上記の SELECT 文は次の値を返します。

<H1><B>My Heading</B></H1>

引用符と XMLELEMENT 関数の詳細については、無効な名前と SQL/XMLを参照してください。

XMLELEMENT 関数をネストして階層を作成できます。同じレベルのドキュメント階層で異なる要素を返したい場合に、XMLFOREST 関数を使用します。

詳細については、XMLFOREST 関数 [文字列]を参照してください。

XMLELEMENT 関数を含むクエリを実行すると、BINARY、LONG BINARY、IMAGE、VARBINARY の各カラムのデータは、自動的に base64 エンコード形式で返されます。

参照
標準と互換性
  • SQL/XML ドラフト規格の一部。

  • NAME キーワードを省略し、第 1 引数に文字列式を使用することは、ベンダ拡張です。

次の例は、結果セットの各製品に対して <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> を返します。

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> を返します。

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>' を返します。

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' );