zoukankan      html  css  js  c++  java
  • 在SQL2005里直接读取XML并解析其内容

     
    SQL2005里一项令人心动的内容就是支持XML类型了,而且今天刚刚知道,原来本身还支持在SQL2005的语句里解析XML.
    不多说,直接贴例子代码:

    访问一个结点:
    SELECT     TOP (10) 
                          dataxml.query('declare namespace AWMI="http://webservices.test.com/ABCDCommerceService/2005-10-05"
    ; data(/AWMI:ItemLookupResponse/AWMI:OperationRequest/AWMI:RequestId)')
                           AS Expr1
    FROM         asin 

    访问一个结点的属性:
    SELECT     TOP (10) 
                          dataxml.query('declare namespace AWMI="http://webservices.test.com/ABCDCommerceService/2005-10-05"
    ; data(/AWMI:ItemLookupResponse/AWMI:OperationRequest/AWMI:RequestId/@approved)')
                           AS Expr1
    FROM         asin 


    dataxml是我表中的字段名称,也就是类型为XML的字段.
    先声明了一个命名空间,然后直接按照结点访问,就这么简单.至于属性就加个@就可以了

    我们还可以给这个XML设置验证格式,当然,可以用XSD验证.
    在写下面的语句:

    CREATE XML SCHEMA COLLECTION [dbo].[requestSchemaCollection]
    AS N'这里是XSD的内容'

    注意编码在SQL里默认是UTF16的,你可以把编码那句删除.
    创建成功以后就可以在programmablitity---types---XML schema collections里看到你创建的验证格式了.去修改你的表,把格式添加进table的XML列里.

    在你用Visual Studio调用在SQL语句里直接解析XML的过程时,还可能出现类似错误:
    UPDATE failed because the following SET options have incorrect settings: 'ARITHABORT'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or query notifications and/or xml data type methods.
    如果有这个错误,你需要在语句里添加Set ARITHABORT ON来解决此问题.这些是最近在操作SQL2005时遇到的.如果你也在用,试试看吧
    看看这个,也很有用
    http://www.microsoft.com/china/msdn/library/data/sqlserver/XMLSupportinMicrosoftSQLServer2005.mspx
  • 相关阅读:
    盲山有感
    一个用Regex的完成sql语句中字段替换的demo
    月夜奔跑
    乱弹
    《勇敢抉择》摘录一
    梦想高歌
    从今天起
    php性能优化
    unity3d shader中RenderType的所有类型
    Unity打包ipa图文教程
  • 原文地址:https://www.cnblogs.com/zhangzheny/p/768491.html
Copyright © 2011-2022 走看看