FOR XML 子句的基本语法

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 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') ] ]

参数

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 查询和 TYPE 返回 xml 类型实例的指令的功能,使你可以编写复杂性较低的查询。 它为编写大多数 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 选项,则列作为子元素返回。 否则,它们将映射为 XML 属性。 只在 RAW、AUTO 和 PATH 模式中支持此选项。 使用此指令时,可以选择指定 XSINIL 或 ABSENT。 XSINIL 指定为 NULL 列值创建 xsi:nil 属性设置为 True 的元素。 默认情况下,或者与 ELEMENTS 一起指定了 ABSENT 时,不会为 NULL 值创建任何元素。 有关工作示例,请参阅 将 RAW 模式与 FOR XML 一起使用将 AUTO 模式与 FOR XML 一起使用

二进制 Base64

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

TYPE

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

ROOT [('RootName')]

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

注解

有关 SELECT... FOR XML 子句的文档(同时适用于 Azure SQL 数据库和 Fabric 中 SQL 数据库),请参阅 FOR XML (SQL Server)