当前位置: 代码迷 >> Sql Server >> xp_sendmail @query 是否只能用#table? 有办法用#table 吗?解决方案
  详细解决方案

xp_sendmail @query 是否只能用#table? 有办法用#table 吗?解决方案

热度:65   发布时间:2016-04-27 18:48:11.0
xp_sendmail @query 是否只能用##table? 有办法用#table 吗?
按照微软的解释:[email protected],与执行xp_sendmail 是两个不同的联接,[email protected] a,b,c from ##table .我想问有没有办法让它可以实现select a,b,c from #table 呢?

以下是我自已想到的办法:
虽然不能用局部临时表,但也不一定要用全局临时表,下面的代码是用的表变量: 

Declare @sql varchar(1000) 
set @sql = 'Declare @tablewarehouse table(fieldname varchar(10), value varchar(100))  
insert into @tablewarehouse values ( ' 'warehouse ' ', @Warehouse) 
insert into @tablewarehouse values ( ' 'address ' ', @Address) 
insert into @tablewarehouse values ( ' 'prefix ' ', @Prefix) 
select * from @tablewarehouse for xml raw' 

exec master.dbo.xp_startmail  

exec master.dbo.xp_sendmail @[email protected],  
@query [email protected]
@message = 'Attached xml file. ',  
@attach_results = 'TRUE ', @width =200, 
@subject = 'Check Warehouse '


问题又出来了,set @sql='............'里不能有变量,否则会提示:
Must declare variable @*** 因为是不同的进程,变量不能共享
有什么办法没有? 用表变量或者是局部临时表?

------解决方案--------------------
定义一临时表,将exec的结果放到该临时表中。
insert into #t(...) exec @sql
  相关解决方案