8.4 将查询结果输出为XML文档
SQL Server 2005在SQL Server 2000的基础之上扩充了有关XML数据的相应功能。为了支持XML类型,增加了相应的关键字用于注册和管理XML Schema。FOR XML和OPENXML功能(它们在SQL Server 2000中被引入用于在关系型数据和XML之间进行转换)也有所改变。下面就SQL Server 2005中为更好地支持XML数据类型所做的改动进行简单地介绍。
8.4.1 使用FOR XML命令查询XML数据
在SQL Server中,获得一个XML类型结果集的最简单的方法就是使用FOR XML命令。FOR命令最早由SQL Server 2000引入。使用FOR XML命令可以直接将查询后的结果转换为XML文档的形式。
FOR XML命令的语法如下所示:
[ 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') ] ]
其中主要的参数如表8.9所示。
表8.9 主要的参数
|
参数名称 |
含 义 |
|
RAW [ ('ElementName') ] |
生成XML文档时,将查询所得数据集中的每行记录作为一个元素,且元素的名称为ElementName |
|
AUTO |
查询结果将以XML的层次结构返回给用户,其中查询结果中至少有一个字段将被指定为元素,而其他字段可能会被指定为属性 |
|
XMLDATA |
返回XML Schema类型的XML文档 |
|
EXPLICIT |
为返回的结果集显式地指定层级关系 |
|
PATH |
借助PATH参数,开发人员可以通过设计嵌套的FOR XML查询来组织元素和属性,例如设置用于表示复杂属性的嵌套方式等 |
|
TYPE |
用于指定查询结果将以数据类型实例的方式返回 |
|
ROOT |
用于指定根元素 |
SQL Server 2000 中的FOR XML子句并不支持在服务器上处理XML型结果集,即不能把XML结果集存在表中,或分配给一个变量。而SQL Server 2005通过提供TYPE选项,进一步提高了FOR XML功能。例如,SELECT...FOR XML TYPE语句所生成的XML数据类型的结果集可被分配给一个本地的XML变量,也可被用于INSERT 语句以实现插入XML数据类型的字段。此外,通过PATH选项,还可以设置指定字段值在XML路径中的表现形式。TYPE和PATH选项的使用大大简化了创建复杂的XML应用的工作。下面分别就FOR XML的三种主要用法进行简要地介绍。
| 回书目 上一节 下一节 |
|
||||
| · Linux——从菜鸟到高手 · 如何优化IT 控制能耗 · 国际文档格式标准开战 · SQL Server入门到精通 · SQL Server 2008/2005.. · 贝恩资本携手华为22亿.. · ARP攻击防范与解决方案 · 华为员工自杀频频拷问.. |
· 初探敏捷开发 · 体验Visual Studio 200.. · SOA 面向服务架构 · CISSP认证成长之路 · 隐私保护技术探讨 · WCF开发基础 · 珊瑚虫QQ作者侵权案开庭 · 计算机网络维护入门 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 中间件应用技术专题 · SQL Server入门到精通 |
· 病毒查杀专题 · 国际文档格式标准开战 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. · SOA 面向服务架构 · ADSL应用面面俱到 · 入侵防护系统(IPS)初探 |
|||
|
||||
| · iSCSI应用与发展 · 中间件应用技术专题 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · iSCSI应用与发展 · RAID——磁盘阵列基础 · 身份认证技术 |
· 病毒查杀专题 · 清除流氓软件——51CTO.. · Sniffer安全技术从入门.. · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 |
|||