当前位置: 代码迷 >> Sql Server >> 把 for xml path 查询出的结果保留
  详细解决方案

把 for xml path 查询出的结果保留

热度:545   发布时间:2016-04-25 00:23:35.0
把 for xml path 查询出的结果保存
把 for xml path 查询出的结果想保存到变量里,供下面的插入 使用


declare @xmlData nvarchar(max)
set @xmlData =  'select * from _role where roleid=5 for xml path(''_role'')'
exec(@xmlData)


INSERT into _operateLog (employeeid,clientId,recordData,operateType,operateTime,operateMsg,moduleName) 
values(1,1,exec(@xmlData),1,getdate(),'添加了部门节点','部门')


这样直接报错:
消息 156,级别 15,状态 1,第 7 行
关键字 'exec' 附近有语法错误。
消息 102,级别 15,状态 1,第 7 行
',' 附近有语法错误。

------解决方案--------------------
支持大版~
------解决方案--------------------
引用:
引用:引用:SQL code?1234declare @xmlData nvarchar(max) SET @xmlData=(select * from _role where roleid=5 for xml path('_role'))INSERT into _operateLog (employeei……


嗯   这块不怎么明白  再去看看
------解决方案--------------------
本帖最后由 roy_88 于 2012-12-06 11:44:18 编辑
sp_executesql这样用

declare @xmlData XML,
@tbName nvarchar(20),
@Sql nvarchar(max)

 
set @tbName='role'
set @Sql =  'set @xmlData=(select * from '+@tbName+' where roleid=5 for xml path(''' +  @tbName + ''')'
 exec sp_executesql @Sql,N'@xmlData xml output',@xmlData OUTPUT


 
INSERT into _operateLog (employeeid,clientId,recordData,operateType,operateTime,operateMsg,moduleName) 
values(1,1, @xmlData,1,getdate(),'添加了部门节点','部门')
  相关解决方案