smry的空间

我们一直在努力....

MS SQL XML 我的使用

标签: XML SQL2005 SQL

/********************************SQL XML 2005*******************************/

/*SQL XML 2005:列表构造XML */
--声明XML类型的变量来存储XML
DECLARE @xVar XML
SET @xVar =(
--将一查询结果集转换成SQL XML格式
select id,num
    from (select 'a' as ID,1 num union select 'b' as ID,7 num union select 'c' as ID,4 num union select 'd' as ID,2 num) _a
   
    FOR XML raw
)
 
select @xVar
 
/*2005XML解析为列表*/
declare @detail table(id char(1),num int)
insert @detail(id,num)
select t.r.value('(@id)'/*此处列名参数的大小写有区别*/,'char(1)'),t.r.value('(@num)','int')
from @xVar.nodes('/row') as t(r)/*t为表,r为列,可以自己命名,对应引用*/
 
select * from @detail
 
现在我们可以看看2000的是如何处理xml
/********************************SQL XML 2000******************************/
/*构造XML格式如下:*/
declare @doc nvarchar(4000)
/*nvarchar则最多存储4000个字符,不论是英文还是汉字。2005中可以使用varchar(max)*来代替,最大可以存储2GB*/
select @doc='
    <root>
        <row>
            <aa>DAKKK</aa><bb>F7AZSHGM</bb><cc>a</cc><dd>b</dd>
        </row>
        <row>
            <aa>DAKKK</aa><bb>QA67OHGM</bb><cc>v</cc><dd>d</dd>
        </row>
        <row>
            <aa>BA001</aa><bb>YLMA7HGP</bb><cc>w</cc><dd>t</dd>
        </row>
    </root>'
SELECT @doc
 
/*解析该XML*/
declare @idoc int
exec sp_xml_preparedocument@idoc out, @doc
select aa,bb,cc,dd
from openxml(@idoc,'/root/row',2) with(aa char(12),bb char(8),cc varchar(20),dd varchar(20))
exec sp_xml_removedocument@idoc

对于SQL XML 写很多字大家估计也不会看,不如就将我smry的SQL XML 代码在查询分析器中来运行,这其中SQL XML 很多内容你就可以了解到了.......


    分享: 收藏到CSDN 收藏到javaeye 收藏到博客园 收藏&分享
  • 浏览 (392)
  • 评论 (0)
  • 发表于 2009-08-17 10:24
    评分: 请先登录再投票,同一篇博客一月只能投票一次!
    无人投票

相关博客:


评论


发表评论

关注此文的人们还关注