FOR XML 子句的基本语法

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

FOR XML 模式可以是 RAW、AUTO、EXPLICIT 或 PATH。 它确定产生的 XML 的形状。

重要

不推荐使用 FOR XML 选项的 XMLDATA 指令。 如果是 RAW 和 AUTO 模式,请使用 XSD 生成。 在 EXPLICT 模式下,没有可以代替 XMLDATA 指令的项。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

语法

下面是 FOR 子句 (Transact-SQL)中所述的基本语法。

[ FOR { BROWSE | <XML> } ]
<XML> ::=
XML
    {
      { RAW [ ('ElementName') ] | AUTO }
        [
           <CommonDirectives>
           [ , { XMLDATA | XMLSCHEMA [ ('TargetNameSpaceURI') ]} ]
           [ , ELEMENTS [ XSINIL | ABSENT ]
        ]
      | EXPLICIT
        [
           <CommonDirectives>
           [ , XMLDATA ]
        ]
      | PATH [ ('ElementName') ]
        [
           <CommonDirectives>
           [ , ELEMENTS [ XSINIL | ABSENT ] ]
        ]
     }

<CommonDirectives> ::=
   [ , BINARY BASE64 ]
   [ , TYPE ]
   [ , ROOT [ ('RootName') ] ]

Azure SQL 数据库的语法

有关同样适用于 Azure SQL 数据库的 SELECT...“FOR XML”子句的文档,请参阅 FOR XML (SQL Server)

参数

RAW [('ElementName')]

获得查询结果并将结果集内的每一行转换为以一般标识符 <row /> 作为元素标记的 XML 元素。 使用此指令时,可以选择指定行元素的名称。 生成的 XML 将把指定的 ElementName 用作为每行生成的行元素。 有关详细信息,请参阅 将 RAW 模式与 FOR XML 一起使用

AUTO

以简单的嵌套 XML 树返回查询结果。 FROM 子句中的每个表(在 SELECT 子句中至少为其列出了一列)都表示为一个 XML 元素。 SELECT 子句中列出的列映射到适当的元素属性。 有关详细信息,请参阅 将 AUTO 模式与 FOR XML 一起使用

EXPLICIT

指定显式定义产生的 XML 树的形状。 使用此模式时,必须以一种特定的方式编写查询,以便显式指定所需嵌套的其他信息。 有关详细信息,请参阅 将 EXPLICIT 模式与 FOR XML 一起使用

PATH

提供一种更简单的方式来混合元素和属性,并引入表示复杂属性的其他嵌套。 可以使用 FOR XML EXPLICIT 模式查询从行集中构造这种 XML,但 PATH 模式针对可能很烦琐的 EXPLICIT 模式查询提供了一种更简单的替代方式。 通过 PATH 模式,以及用于编写嵌套 FOR XML 查询的功能和返回 xml 类型实例的 TYPE 指令,您可以编写简单的查询。 它为编写大多数 EXPLICIT 模式查询提供了一个替代方式。 默认情况下,PATH 模式为结果集中的每一行生成一个 <row> 元素包装。 您还可以选择指定元素名称。 如果这样,则指定的名称用作包装元素名称。 如果提供空字符串 (FOR XML PATH ('')),则不会生成任何包装元素。 有关详细信息,请参阅 将 PATH 模式与 FOR XML 一起使用

MLDATA

指定应返回内联 XML 数据简化 (XDR) 架构。 文档的架构被预置为内联架构。 有关工作示例,请参阅 将 RAW 模式与 FOR XML 一起使用

XMLSCHEMA

返回内联 W3C XML 架构 (XSD)。 指定此指令时,可以选择指定目标命名空间 URI。 这样将返回架构中指定的命名空间。 有关详细信息,请参阅 生成内联 XSD 架构。 有关工作示例,请参阅 将 RAW 模式与 FOR XML 一起使用

ELEMENTS

如果指定 ELEMENTS 选项,则列作为子元素返回。 否则,列将映射到 XML 属性。 只在 RAW、AUTO 和 PATH 模式中支持此选项。 使用此指令时,可以选择指定 XSINIL 或 ABSENT。 XSINIL 指定为 NULL 列值创建 xsi:nil 属性设置为 True 的元素。 默认情况下,或者与 ELEMENTS 一起指定了 ABSENT 时,不会为 NULL 值创建任何元素。 有关工作示例,请参阅 将 RAW 模式与 FOR XML 一起使用将 AUTO 模式与 FOR XML 一起使用

BINARY BASE64

如果指定 BINARY Base64 选项,则查询所返回的任何二进制数据都用 base64 编码格式表示。 若要使用 RAW 和 EXPLICIT 模式检索二进制数据,必须指定此选项。 在 AUTO 模式中,默认情况下将二进制数据作为引用返回。 有关工作示例,请参阅 将 RAW 模式与 FOR XML 一起使用

TYPE

指定查询以 xml 类型返回结果。 有关详细信息,请参阅 TYPE Directive in FOR XML Queries

ROOT [('RootName')]

指定向生成的 XML 中添加单个顶级元素。 可以选择指定要生成的根元素名称。 默认值为 <root>

另请参阅