Sql sp_send_dbmail中的局部变量?

Sql sp_send_dbmail中的局部变量?,sql,sql-server-2005,stored-procedures,Sql,Sql Server 2005,Stored Procedures,我正在开发一个SQL存储过程,它应该发送一个带有查询结果的附件 我正在使用sp\u send\u dbmail发送电子邮件 在我要发送的查询中,我将。当我执行存储过程时,我收到一条错误消息,它说变量不存在 我的代码: DECLARE @t TABLE ( id INT IDENTITY(1,1), some fields ) DECLARE @query VARCHAR(MAX) SET @query = 'SELECT some values FROM @t

我正在开发一个SQL存储过程,它应该发送一个带有查询结果的附件

我正在使用
sp\u send\u 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'
是否有任何方法可以引用此存储过程中的局部变量?若否,原因为何

蒂亚


(我使用的是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

为什么使用临时表会有帮助?临时表不也是在我原始代码的上下文中吗?@chama:修改了我的答案。您需要一张全球(两个标志)的桌子。谢谢。这是我在大多数情况下都会做的,但是我能够找到一个简单的解决方法,这是我的查询所特有的。