OPENXML

    这几天一直在学习SQLSERVER2008,希望能把自己学到的一点东西整理出来,供自己没事的时候翻阅,如果也能偶尔照顾到某位程序员,那就更nice。

   XML作为数据传输一个非常优秀的应用,越来越受到业界的追捧。我们看到sqlserver从2000开始一直在增强其对xml的性能。在sqlserver2008中,有两个很重要的

语句或者函数:for xml,和openxml。这两个执行的功能却是刚好相反。For Xml 是将库中行集数据以XML形式展开,而openxml则是将XML形式的数据以传统的数据库

查询数据形式表现出来。

    OPENXML:Because openxml is a rowset provider,it can be used in the T-SQL statments in which rowset providers (table,view,opensetrow function can appear),so it provides a rowset view over the xml documents .

   最重要的功能就是说它能提供在XML文档上行集的视图。通俗讲就是通过XML,我们能得到一个行集的视图,然后在这个视图上为所欲为,干你想干的能干的事情。

了解了性质以后,我们再来看下它的语法:

        OPENXML( idoc int [ in] , rowpattern nvarchar [ in ] , [ flags byte [ in ] ] )

        [ WITH ( SchemaDeclaration | TableName ) ]:

     默认的openxml有3个参数,第一个参数是个int型的,来自于输入,一般通过执行EXEC SP_XML_preparedocument

    得到,他是通过执行这个存储过程,获得一个被处理的XML文档你想要的数据。第二个参数也是来自输入,指的是你要处理的节点。它通过第一个参数找到数据

中要处理的节点位置。第三个参数有四个值,分别是0,1,2,8.默认不写的话就为0,意思是以‘属性为中心’,通俗说就是处理你已经找到的节点的属性值。1也是这个意思。2表示以‘元素为中心’,通俗讲就是处理的节点子元素。所以这三个参数的意思是:第一个元素获得要处理的XML文档的内容,第二个节点获得内容中的节点,第三个内容是处理节点上的哪方面内容。

   with是可选项,也是指节点内容处理。有人会问那它跟上面的第三个属性有上面区别。区别在于第三个属性指定处理内容,with则具体指定了内容上的内容。

比如<Order OrderID='1' OrderDate ='2001-09-03'>,如果第三个属性指定为1,即处理属性中心,在with中可以写成with( OrderID varchar(20))或者with(OrderId varchar(20),OrderDate getdate()),指定它要获得哪个具体属性值。

   如果在第三个属性指定为2,则在with中表示获得子元素。
   如果要获得父类节点上的元素,则应该在with中使用@,形如:with(OrderID varchar(20) ‘.../@OrderID’

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值