/********************************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 很多内容你就可以了解到了.......