xp_sendmail   @query   是否只能用##table?   有办法用#table   吗?
按照微软的解释:因为@query会生成另一个联接来执行查询,与执行xp_sendmail 是两个不同的联接,所以在@query中只能select 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  @recipients=@EmailAddress,   
@query =@sql,  
@message =  'Attached xml file. ',   
@attach_results =  'TRUE ',  @width =200,  
@subject =  'Check Warehouse '
问题又出来了,set @sql='............'里不能有变量,否则会提示:
Must declare variable @*** 因为是不同的进程,变量不能共享
有什么办法没有? 用表变量或者是局部临时表?
------解决方案--------------------定义一临时表,将exec的结果放到该临时表中。
insert into #t(...) exec @sql