我正在研究一个SQL存储过程,该过程应该发送带有查询结果的附件。
我正在使用sp_send_dbmail发送电子邮件。
sp_send_dbmail
在我要发送的查询中,我将联接到一个表变量中。当我执行存储过程时,我收到一条错误消息,指出该变量不存在。
我的代码:
DECLARE @t TABLE ( id INT IDENTITY(1,1), some fields ) DECLARE @query VARCHAR(MAX) SET @query = 'SELECT some values FROM @t t INNER JOIN dbo.Table d ON t.field = d.field EXEC msdb.dbo.sp_send_dbmail @recipients=@recipients_list, @subject = @subject, @query = @query, @attach_query_result_as_file = 1, @query_result_width = 4000, @query_attachment_filename = 'Details.txt'
我有什么办法可以在此存储过程中引用局部变量吗?如果没有,为什么不呢?
TIA!
(我正在使用SQL Server 2005)
该查询在与原始代码正文不同的上下文中运行,因此它不知道任何局部变量。尝试改用全局临时表。
CREATE TABLE ##t ( id INT IDENTITY(1,1), some fields ) DECLARE @query VARCHAR(MAX) SET @query = 'SELECT some values FROM ##t t INNER JOIN dbo.Table d ON t.field = d.field' EXEC msdb.dbo.sp_send_dbmail @recipients=@recipients_list, @subject = @subject, @query = @query, @attach_query_result_as_file = 1, @query_result_width = 4000, @query_attachment_filename = 'Details.txt' DROP TABLE ##t