FOR XML 子句的基本语法
FOR XML 模式可以是 RAW、AUTO、EXPLICIT 或 PATH。它确定产生的 XML 的形状。
重要提示 |
---|
不推荐使用 FOR XML 选项的 XMLDATA 指令。如果是 RAW 和 AUTO 模式,请使用 XSD 生成。在 EXPLICT 模式下,没有可以代替 XMLDATA 指令的项。后续版本的 Microsoft 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 模式。AUTO
以简单的嵌套 XML 树返回查询结果。FROM 子句中的每个表(在 SELECT 子句中至少为其列出了一列)都表示为一个 XML 元素。SELECT 子句中列出的列映射到适当的元素属性。有关详细信息,请参阅使用 AUTO 模式。EXPLICIT
指定显式定义产生的 XML 树的形状。使用此模式时,必须以一种特定的方式编写查询,以便显式指定所需嵌套的其他信息。有关详细信息,请参阅使用 EXPLICIT 模式。PATH
提供一种更简单的方式来混合元素和属性,并引入表示复杂属性的其他嵌套。可以使用 FOR XML EXPLICIT 模式查询从行集中构造这种 XML,但 PATH 模式针对可能很烦琐的 EXPLICIT 模式查询提供了一种更简单的替代方式。通过 PATH 模式,以及用于编写嵌套 FOR XML 查询的功能和返回 xml 类型实例的 TYPE 指令,您可以编写简单的查询。它为编写大多数 EXPLICIT 模式查询提供了一个替代方式。默认情况下,PATH 模式为结果集中的每一行生成一个 <row> 元素包装。您还可以选择指定元素名称。如果这样,则指定的名称用作包装元素名称。如果提供空字符串 (FOR XML PATH ('')),则不会生成任何包装元素。有关详细信息,请参阅使用 PATH 模式。XMLDATA
指定应返回内联 XML 数据简化 (XDR) 架构。文档的架构被预置为内联架构。有关使用示例,请参阅使用 RAW 模式。XMLSCHEMA
返回内联 W3C XML 架构 (XSD)。指定此指令时,可以选择指定目标命名空间 URI。这样将返回架构中指定的命名空间。有关详细信息,请参阅内联 XSD 架构生成。有关使用示例,请参阅使用 RAW 模式。ELEMENTS
如果指定 ELEMENTS 选项,则列作为子元素返回。否则,列将映射到 XML 属性。只在 RAW、AUTO 和 PATH 模式中支持此选项。使用此指令时,可以选择指定 XSINIL 或 ABSENT。XSINIL 指定为 NULL 列值创建 xsi:nil 属性设置为 True 的元素。默认情况下,或者与 ELEMENTS 一起指定了 ABSENT 时,不会为 NULL 值创建任何元素。有关使用示例,请参阅使用 RAW 模式和使用 AUTO 模式。BINARY BASE64
如果指定 BINARY Base64 选项,则查询所返回的任何二进制数据都用 base64 编码格式表示。若要使用 RAW 和 EXPLICIT 模式检索二进制数据,必须指定此选项。在 AUTO 模式中,默认情况下将二进制数据作为引用返回。有关使用示例,请参阅使用 RAW 模式。TYPE
指定查询以 xml 类型返回结果。有关详细信息,请参阅 FOR XML 查询中的 TYPE 指令。ROOT [('RootName')]
指定向产生的 XML 中添加单个顶级元素。可以选择指定要生成的根元素名称。默认值为“root”。