SQL Server 2008中有关XML的新功能

作者:戴羽 来源:IT专家网 时间:2008-06-04 12:57:00 

1 导言

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流式的查询结果。

  SELECTProductID,ProductName
  FROMProductsProduct
  FORXMLAUTO

这个查询返回一个如下面示例所示的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

标签:SQL,Server,sql,2008,xml
0
投稿

猜你喜欢

  • 开展全面的网站评估

    2007-09-27 19:21:00
  • ServerXMLHTTP的超时设置(setTimeouts)参数含义

    2009-02-12 12:51:00
  • linux下mysql命令

    2011-01-04 19:42:00
  • CSS Hack经验总结

    2008-05-01 13:13:00
  • 十个简单好用的设计技巧[译]

    2009-04-08 12:56:00
  • 关于Dreamweaver乱码问题的解决方案

    2010-09-02 12:36:00
  • 一个不错的js软键盘代码而且移植方便

    2007-08-14 12:56:00
  • 教你轻松掌握如何正确的修复Access数据库

    2008-11-28 16:21:00
  • asp统计在线人数是实时的吗?

    2010-07-14 21:07:00
  • 语义、标准和样式

    2008-06-05 12:52:00
  • 模式化窗口

    2009-06-18 18:41:00
  • 三种禁用FileSystemObject组件的方法

    2007-09-23 15:52:00
  • 跨浏览器的CSS固定定位{position:fixed}

    2007-05-11 16:50:00
  • 评论是倒序好还是顺序好?

    2007-11-09 10:40:00
  • FF下,用 col 隐藏表格列的方法详解!

    2008-04-02 11:35:00
  • asp中最新新闻显示new图片的实现代码

    2012-11-30 20:31:42
  • Mysql触发器处理本表数据

    2010-10-25 19:56:00
  • js 操作cookie的教程

    2008-03-05 13:08:00
  • 函数式编程让JS更优美

    2008-06-10 12:40:00
  • 8大措施帮你构筑Access安全防线

    2010-03-11 14:38:00
  • asp之家 网络编程 m.aspxhome.com