将存储过程传递给sp_send_dbmail

时间:2009-03-18 15:31:14

标签: sql sql-server email stored-procedures

我在SQL Server 2008中使用sp_send_dbmail发送查询结果。我将查询移动到proc中,并尝试在sp_send_dbmail程序中使用proc,如下所示:

EXEC msdb.dbo.sp_send_dbmail 
@profile_name               = 'myprofile',
@from_address               = 'email@somedomain.com',
@reply_to                   = 'email@somedomain.com',
@recipients                 = 'email@differentdomain.com',  
@importance                 = 'NORMAL', 
@sensitivity                = 'NORMAL', 
@subject                    = 'My Subject',
@body                       = 'Here you go.',
@attach_query_result_as_file= 1,
--@query_result_header      = 1,
@query_result_width         = 1000, 
@query_result_separator     = '~',
@query_attachment_filename  = 'myFile.txt',
@query                      = 'EXEC dbo.myProc'

我也尝试过使用proc上的4部分命名;有和没有'EXEC'等。它作为一个查询工作得很好,但我似乎无法让它作为一个proc工作。这甚至可能吗?

2 个答案:

答案 0 :(得分:9)

您需要添加数据库上下文:

@execute_query_database = 'MyDatabaseName',

我刚刚在AdventureWorks2008上运行了这个问题:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DBMail',
    @recipients = 'mitch@domain.com',
    @query = 'exec dbo.uspGetManagerEmployees 5' ,
    @execute_query_database = 'AdventureWorks2008',
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1 ;

答案 1 :(得分:0)

您是否尝试过创建用户定义的函数而不是存储过程?

类似的东西:

@query = 'select something from dbo.myFunction()'