我们使用:
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转换为表还需要手工指定列名,麻烦,如果能自动创建列名就可以通用了
可能因为工作的原因 接触数据库这块比较少,之前都是做程序这块,数据库这块都有专门的人来做 分工都很明细 所以对数据库这一块完全不了解。前段时间 去面试了几家公司 几乎都是在数据库这块挂掉的 连个简单的SQ ......