用途:跨服务器调用存储过程时传输数据。
输入:一个行集,列数不定,用For XML RAW模式将其转换成XML
要求输出:将此XML还原成输入的行集
用OPENXML时,因为不知道原行集列结构,所以无法在with子句定义结构。NODES方法也是同样的问题。
当然,可以调用时传入行集的列定义,或自己解析,再传入OPENXML的with子句,但这样就只能用动态SQL方式执行,无法将结果集传出给动态表达式外部使用。
另外报个CSDN发帖时的漏洞:
1.标签输入后不能编辑
2.标最多添加5个标签,实际只能添加4个
------解决方案--------------------
你明明上了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
直接贴个例子,楼主看看是不是这情况