欢迎来到天天文库
浏览记录
ID:34725876
大小:51.44 KB
页数:4页
时间:2019-03-10
《sqlserver2008中有关xml的新功能》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SQLServer2008中有关XML的新功能1导言 Microsoft在MicrosoftSQLServer2000中推出了与XML相关的功能以及Transact-SQL关键字FORXML和OPENXML,这使得开发人员可以编写Transact-SQL代码来获取XML流形式的查询结果,并将一个XML文档分割成一个rowset。SQLServer2005显著的扩展了这些XML功能,推出了一个支持XSDschema验证、基于XQuery的操作和XML索引的本地的xml数据类型。SQLServer2008建
2、立在之前版本的XML功能基础之上,做了改进来迎接客户在存储和操纵数据库中的XML数据时所面临的挑战。 2SQLServerXML功能的发展历程 SQLServer的XML功能随着从SQLServer2000版本以来的每一个版本而不断发展。在我们检查SQLServer2008中的改进之前,通过之前的版本来总结XML功能的发展历程可能会比较有用。 2.1SQLServer2000中的XML功能 在SQLServer2000中,Microsoft推出了Transact-SQL关键字FORXML和OPEN
3、XML。FORXML是对SELECT语句的扩展,它返回如下面的示例所示的XML流式的查询结果。[table][tr][td] SELECTProductID,ProductName FROMProductsProduct FORXMLAUTO[/td][/tr][/table] 这个查询返回一个如下面示例所示的XML片断: [table][tr][td]4、ame="Sprocket"/>[/td][/tr][/table] OPENXML功能执行与FORXML条件子句相反的功能,它创建一个XML文档的rowset,如下面的示例所示:[table][tr][td]DECLARE@docnvarchar(1000)SET@doc=' 'DECLARE@xmlDo5、cintegerEXECsp_xml_preparedocument@xmlDocOUTPUT,@docSELECT*FROMOPENXML(@xmlDoc,'Order/Item',1)WITH(OrderIDinteger'../@OrderID',ProductIDinteger,Quantityinteger)EXECsp_xml_removedocument@xmlDoc[/td][/tr][/table] 注意用sp_xml_preparedocument和sp_xml_removedocu6、ment存储过程来创建XML文档的节点树的一个内存展示的用法。这个Transact-SQL代码返回下面的rowset。 [table][tr][td=1,1,194]OrderID[/td][td=1,1,140]ProductID[/td][td=1,1,146]Quantity[/td][/tr][tr][td=1,1,194]1011[/td][td=1,1,140]1[/td][td=1,1,146]2[/td][/tr][tr][td=1,1,194]1011[/td][td=1,1,140]27、[/td][td=1,1,146]1[/td][/tr][/table] 2.2SQLServer2005中的XML功能 在SQLServer2005中,FORXML功能得到了增强,它有了对根元素和元素名称的新的选项、使用FORXML调用以便你可以建立复杂的层次关系的能力、和一个新的使得你可以定义将要使用XPath语法来提取的XML结构的PATH模式,如下面的示例所示:[table][tr][td]SELECTProductIDAS'@ProductID',ProductNameAS'ProductNa8、me'FROMProductsFORXMLPATH('Product'),ROOT('Products')[/td][/tr][/table] 这个查询返回下面的XML:[table][tr][td]WidgetSpro
4、ame="Sprocket"/>[/td][/tr][/table] OPENXML功能执行与FORXML条件子句相反的功能,它创建一个XML文档的rowset,如下面的示例所示:[table][tr][td]DECLARE@docnvarchar(1000)SET@doc=' 'DECLARE@xmlDo
5、cintegerEXECsp_xml_preparedocument@xmlDocOUTPUT,@docSELECT*FROMOPENXML(@xmlDoc,'Order/Item',1)WITH(OrderIDinteger'../@OrderID',ProductIDinteger,Quantityinteger)EXECsp_xml_removedocument@xmlDoc[/td][/tr][/table] 注意用sp_xml_preparedocument和sp_xml_removedocu
6、ment存储过程来创建XML文档的节点树的一个内存展示的用法。这个Transact-SQL代码返回下面的rowset。 [table][tr][td=1,1,194]OrderID[/td][td=1,1,140]ProductID[/td][td=1,1,146]Quantity[/td][/tr][tr][td=1,1,194]1011[/td][td=1,1,140]1[/td][td=1,1,146]2[/td][/tr][tr][td=1,1,194]1011[/td][td=1,1,140]2
7、[/td][td=1,1,146]1[/td][/tr][/table] 2.2SQLServer2005中的XML功能 在SQLServer2005中,FORXML功能得到了增强,它有了对根元素和元素名称的新的选项、使用FORXML调用以便你可以建立复杂的层次关系的能力、和一个新的使得你可以定义将要使用XPath语法来提取的XML结构的PATH模式,如下面的示例所示:[table][tr][td]SELECTProductIDAS'@ProductID',ProductNameAS'ProductNa
8、me'FROMProductsFORXMLPATH('Product'),ROOT('Products')[/td][/tr][/table] 这个查询返回下面的XML:[table][tr][td]WidgetSpro
此文档下载收益归作者所有