日期:2014-05-17  浏览次数:20439 次

XML转行集难题
用途:跨服务器调用存储过程时传输数据。
输入:一个行集,列数不定,用For XML RAW模式将其转换成XML
要求输出:将此XML还原成输入的行集

用OPENXML时,因为不知道原行集列结构,所以无法在with子句定义结构。NODES方法也是同样的问题。
当然,可以调用时传入行集的列定义,或自己解析,再传入OPENXML的with子句,但这样就只能用动态SQL方式执行,无法将结果集传出给动态表达式外部使用。

另外报个CSDN发帖时的漏洞:
1.标签输入后不能编辑
2.标最多添加5个标签,实际只能添加4个
SQL?XML?行集?结果集?表 SQL XML 行集 结果集

------解决方案--------------------
你明明上了5个标签
------解决方案--------------------
关注下,XML处理的不多,真心想帮楼主
------解决方案--------------------
这个纯粹 看看  围观
------解决方案--------------------
在openxml之后指定表WITH 表名;  
------解决方案--------------------
DECLARE @xml XML
 DECLARE @idoc int
 SET @xml =(SELECT TOP 10000 a.* FROM sys.[sysobjects] AS a,sys.[sysobjects] AS b,sys.[sysobjects] AS c  FOR XML PATH('message'),ROOT('root'))
 
--1
DECLARE @dt DATETIME=GETDATE()
EXEC sp_xml_preparedocument @idoc OUTPUT, @xml
SELECT *   
FROM OPENXML(@idoc,'/root/message',2)   
WITH sysobjects;  
EXEC sp_xml_removedocument @idoc


直接贴个例子,楼主看看是不是这情况