扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:IT专家网 来源:IT专家网 2008年1月28日
Microsoft 在Microsoft SQL Server 2000中推出了与XML相关的功能以及Transact-SQL 关键字FOR XML和OPENXML ,这使得开发人员可以编写Transact-SQL代码来获取XML流形式的查询结果,并将一个XML文档分割成一个rowset。SQL Server 2005显著的扩展了这些XML功能,推出了一个支持XSD schema验证、基于XQuery的操作和XML索引的本地的xml 数据类型。SQL Server 2008建立在之前版本的XML功能基础之上,做了改进来迎接客户在存储和操纵数据库中的XML数据时所面临的挑战。
2 SQL Server XML 功能的发展历程
SQL Server的XML功能随着从SQL Server2000版本以来的每一个版本而不断发展。在我们检查SQL Server 2008中的改进之前,通过之前的版本来总结XML功能的发展历程可能会比较有用。
2.1 SQL Server 2000中的XML功能
在SQL Server 2000中,Microsoft 推出了Transact-SQL 关键字FOR XML和OPENXML。FOR XML 是对SELECT语句的扩展,它返回如下面的示例所示的XML流式的查询结果。
SELECT ProductID, ProductName FROM Products Product FOR XML AUTO |
这个查询返回一个如下面示例所示的XML片断:
<Product ProductID="1" ProductName="Widget"/> <Product ProductID="2" ProductName="Sprocket"/> |
OPENXML 功能执行与FOR XML 条件子句相反的功能,它创建一个XML文档的rowset ,如下面的示例所示:
DECLARE @doc nvarchar(1000) SET @doc = '<Order OrderID = "1011"> <Item ProductID="1" Quantity="2"/> <Item ProductID="2" Quantity="1"/> </Order>' DECLARE @xmlDoc integer EXEC sp_xml_preparedocument @xmlDoc OUTPUT, @doc SELECT * FROM OPENXML (@xmlDoc, 'Order/Item', 1) WITH (OrderID integer '../@OrderID', ProductID integer, Quantity integer) EXEC sp_xml_removedocument @xmlDoc |
注意用sp_xml_preparedocument和sp_xml_removedocument 存储过程来创建XML文档的节点树的一个内存展示的用法。这个Transact-SQL 代码返回下面的rowset。
OrderID |
ProductID |
Quantity |
1011 |
1 |
2 |
1011 |
2 |
1 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者