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')]
获取查询结果,并将结果集中的每一行转换为 XML 元素,其中元素标记为具有泛型标识符的<row />。 使用此指令时,可以选择指定行元素的名称。 生成的 XML 将使用指定的 ElementName 作为为每个行生成的行元素。 有关详细信息,请参阅 将 RAW 模式与 FOR XML 一起使用。
自动
以简单的嵌套 XML 树返回查询结果。 SELECT 子句中至少列出一列的 FROM 子句中的每个表都表示为 XML 元素。 SELECT 子句中列出的列映射到相应的元素属性。 有关详细信息,请参阅 将 AUTO 模式与 FOR XML 一起使用。
明确
指定显式定义产生的 XML 树的形状。 使用此模式时,查询必须以一种特定方式编写,以便明确说明您想要的嵌套的其他信息。 有关详细信息,请参阅 将 EXPLICIT 模式与 FOR XML 一起使用。
路径
提供一种更简单的方法来混合元素和属性,并引入用于表示复杂属性的其他嵌套。 可以使用 FOR XML EXPLICIT 模式查询从行集合中生成此类 XML,但 PATH 模式提供了一种更简单的替代方法,可以替代相对繁琐的 EXPLICIT 模式查询。 PATH 模式以及编写嵌套 FOR XML 查询和 TYPE 指令以返回 xml 类型实例的功能,使你可以编写不太复杂的查询。 它提供了编写大多数 EXPLICIT 模式查询的替代方法。 默认情况下,PATH 模式会为结果集中的每一行生成一个 <row> 元素的包装。 可以选择指定元素名称。 如果这样做,指定的名称将用作包装元素名称。 如果提供空字符串(FOR XML PATH (''),则不会生成包装元素。 有关详细信息,请参阅 将 PATH 模式与 FOR XML 一起使用。
XMLDATA
指定应返回内联 XML-Data 缩减(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。 默认情况下或当 ABSENT 与 ELEMENTS 一起指定时,不会为 NULL 值创建任何元素。 有关工作示例,请参阅 将 RAW 模式与 FOR XML 配合使用 , 将 AUTO 模式与 FOR XML 配合使用。
BINARY BASE64
如果指定 BINARY Base64 选项,则查询返回的任何二进制数据都以 base64 编码的格式表示。 若要使用 RAW 和 EXPLICIT 模式检索二进制数据,必须指定此选项。 在 AUTO 模式下,默认情况下,二进制数据作为引用返回。 有关工作示例,请参阅 将 RAW 模式与 FOR XML 配合使用。
类型
指定查询将结果作为 xml 类型返回。 有关详细信息,请参阅 TYPE Directive in FOR XML Queries。
ROOT [('RootName')]
指定将单个顶级元素添加到生成的 XML。 可以选择指定要生成的根元素名称。 默认值为“root”。
另请参阅
将 RAW 模式与 FOR XML 一起使用
将 AUTO 模式与 FOR XML 配合使用
将 EXPLICIT 模式与 FOR XML 配合使用
将 PATH 模式与 FOR XML 配合使用
SELECT (Transact-SQL)
FOR XML (SQL Server)