新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国XML论坛<<     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Oracle, SQL Server与XML,XML在数据挖掘中的应用, PMML.
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 数据库 』 → SQL Server和XML的集成 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4196 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: SQL Server和XML的集成 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     niekui 帅哥哟,离线,有人找我吗?双鱼座1987-3-2
      
      
      等级:大一(高数修炼中)
      文章:16
      积分:111
      门派:XML.ORG.CN
      注册:2005/3/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给niekui发送一个短消息 把niekui加入好友 查看niekui的个人资料 搜索niekui在『 XML 与 数据库 』的所有贴子 访问niekui的主页 引用回复这个贴子 回复这个贴子 查看niekui的博客楼主
    发贴心情 SQL Server和XML的集成

    以XML的名义获取信息
      
    SQL Server和XML之间的集成首要一点就是根据SQL数据创建XML文件。XML文件的构造并不复杂,用简单的脚本和ADO记录集就可以轻松产生。这个任务虽然不算麻烦,但开发人员却需要针对他们从服务器获取的结果集合产生不同的脚本,或者编写更为复杂的通用脚本。SELECT 语句则由此而配备了新的FOR XML子句。

    该子句的语法如下所示:
    [ FOR { XML { RAW | AUTO | EXPLICIT }
    [ , XMLDATA ]
    [ , ELEMENTS ]
    [ , BINARY BASE64 ] } ]

    FOR XML子句的XML模式由三种参数值表示:RAW、AUTO或者EXPLICIT。模式决定了结果XML的形式和组成。下面我们就更深入些地通过以下示例了解以上各个XML选项。

    RAW示例
    我们执行以下的SQL语句:
    SET ROWCOUNT 3
    SELECT Orders.OrderID, Orders.OrderDate, ProductID
    FROM Orders, [Order Details]
    WHERE Orders.OrderID = [Order Details].OrderID
    ORDER BY Orders.OrderID
    FOR XML RAW

    执行后产生的结果如下:
    <row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="11"/>
    <row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="42"/>
    <row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="72"/>

    AUTO示例
    我们执行以下的SQL语句:
    ‘结果限制为3条记录。
    SET ROWCOUNT 3
    SELECT Orders.OrderID, Orders.OrderDate, ProductID
    FROM Orders, [Order Details]
    WHERE Orders.OrderID = [Order Details].OrderID
    ORDER BY Orders.OrderID
    FOR XML AUTO

    产生的结果如下所示:
    <Orders OrderID="10248" OrderDate="1996-07-04T00:00:00">
    <Order_x0020_Details ProductID="11"/>
    <Order_x0020_Details ProductID="42"/>
    <Order_x0020_Details ProductID="72"/>
    </Orders>

    EXPLICIT示例
    Explicit模式给予查询编程人员对产生XML的完全控制能力。然而这种控制力度却要价不菲:你得编写每一查询以便SQL语句能包含XML信息。

    有关的语法很复杂,而且超出了本文的讨论范围。[ , XMLDATA ] [ , ELEMENTS ] [ , BINARY BASE64 ] 是相应的可选参数。

    可选元素

      
    示例可以让我们对各种设置的内部工作机理有更多的了解,下面我们就进一步研究下FOR XML语句的可选元素XMLDATA。

    如果你设置该选项,那么XML-Data schema就会包含在结果集合里。以下是SQL语句:
    SET ROWCOUNT 3
    SELECT Orders.OrderID, Orders.OrderDate, ProductID
    FROM Orders, [Order Details]
    WHERE Orders.OrderID = [Order Details].OrderID
    ORDER BY Orders.OrderID
    FOR XML AUTO, XMLDATA

    以上的SQL语句产生以下结果:
    <Schema name="Schema2" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
    <ElementType name="Orders" content="eltOnly" model="closed" order="many"><element type="Order_x0020_Details" maxOccurs="*"/>…

    ELEMENTS
    ELEMENTS选项指示各数据列作为子元素而非属性返回。假如你采用AUTO模式就可以只采用该选项。

    BINARY BASE64
    使用该选项表示你希望采用base64编码格式表示二进制数据。

    采用XML子句的说法可就多了,你最好参考下SQL在线图书。

    在线指南
    SQL Server在线图书 对FOR XML子句的用法进行了阐述。而且还提到了在使用这一子句时要注意的多项限制。比方说,FOR XML字句不能同视图定义或者COMPUTE BY子句合用。你不妨参考有关文档了解更多细节。

    本文只是对FOR XML子句的简单说明,这里要提醒你的是这一部分不过是XML同SQL Server集成需要注意的一点,其他方面的问题还包括IIS的OPENXML 函数和模版文件等。看来真是这样,SQL Server的每个毛孔都滴着XML这种东西。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/4/14 15:35:00
     
     ganlanlv 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:12
      积分:108
      门派:XML.ORG.CN
      注册:2005/3/3

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给ganlanlv发送一个短消息 把ganlanlv加入好友 查看ganlanlv的个人资料 搜索ganlanlv在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看ganlanlv的博客2
    发贴心情 
    强人
    好文
    星一个!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/3 10:14:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 数据库 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/31 20:57:22

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms