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 函数 [String]

在查询中生成一个 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 argument 来更改特性名。

  • 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 函数 [String]

执行包含 XMLELEMENT 函数的查询时,将自动以 base64 编码格式返回 BINARY、LONG BINARY、IMAGE 和 VARBINARY 列中的数据。

另请参见
标准和兼容性
  • SQL/XML 标准草案的一部分。

  • 忽略 NAME 关键字和使用字符串表达式作为第一个参数是一个服务商扩充。

示例

以下示例为结果集中的每个产品生成一个 <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' );