我们使用:
select * from mytb
FOR XML AUTO
将得到的结果以XML方式展示出来,假如我定义了一个变量
declare @a nvarchar(max)
能否把生成的XML存放到@a里面呢?
换句话说,我希望对查询结果进行序列化,需要的时候,再反序列化.
厉害,哈哈,原来这么用的
既然已经得到XML了,能否反过来,把XML的东西转换为临时表?
SQL code:
-- 表转 xml
declare @emp varchar(max);
set @emp='<emp>'+(select EmployeeID,LastName,FirstName,Title from Employees for xml auto)+'</emp>';
-- xml 转表
declare @dh int;
exec sp_xml_preparedocument @dh output,@emp;
select * from openxml(@dh,'/emp/Employees')
with(EmployeeID int './@EmployeeID',LastName varchar(100) './@LastName',
FirstName varchar(100) './@FirstName', Title varchar(100) './@Title');
exec sp_xml_removedocument @dh;
SQL code:
--select @a=(select * from mytb FOR XML AUTO)
--还是使用cast转换下把。
cast(expr as xml)
将表查询结果转换为xml可以自动了,但将XML转换为表还需要手工指定列名,麻烦,如果能自动创建列名就可以通用了
我在编写一个wince5.0的程序,想实现把PDA上的一个LIST <STRING>类型的数据序列化为XML,然后在PC上的一个webservice拿到这个XML,转化为Dataset,更新PC上的数据库,我想问怎么把XML传给webservice的呢?
......