Sql server Db Mail可以发送两个或多个查询的邮件

时间:2013-05-09 09:32:31

标签: sql sql-server dbmail

我想发送db mail,其中包含两个查询的结果,我该如何实现?

USE msdb
EXEC sp_send_dbmail
  @profile_name = 'try01',
  @recipients = 'yyyyy@yyy.com',
  @subject = 'Table Values',
  @body = 'xxxxxxxxxxxxxx.',
  @execute_query_database = 'Reports',
  @query = 'SELECT * from Table'

3 个答案:

答案 0 :(得分:2)

sp_send_dbmail on MSDN显示单个@query参数
因此,除非可以使用UNION加入结果集,否则只能发送一个查询。

或者将查询结果保存到磁盘然后设置@file_attachments(我个人不会)

或使用Reporting Services查询并将电子邮件作为报告发送

答案 1 :(得分:2)

好的,这很简单,就好像你输了一个分号一样,两个查询的结果都被发送了。这是:

USE msdb
EXEC sp_send_dbmail
  @profile_name = 'try01',
  @recipients = 'yyyyy@yyy.com',
  @subject = 'Table Values',
  @body = 'xxxxxxxxxxxxxx.',
  @execute_query_database = 'Reports',
  @query = 'SELECT * from Table; select * from table2'

我现在唯一的问题就是让它变成一个体面的格式。

答案 2 :(得分:0)

将查询放入存储过程,然后在查询行中调用它。

示例存储过程:

CREATE PROCEDURE build_email_as_query
AS
BEGIN

    SET NOCOUNT ON;

    -- newline var

    declare @lf char(6)
    set     @lf = '<br />'

    -- build the email

    select @lf + @lf

    select 'results 1' + @lf    
    select 'results 2' + @lf    
    select 'results 3' + @lf    

END
GO

exec sp_send_dbmail:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'profileName', 
    @body = 'Results of query: <br /><br />',
    @body_format ='HTML',
    @recipients = 'test@domain.com',
    @copy_recipients = '',
    @subject = 'testing emails',
    @execute_query_database = 'DatabaseName',
    @query = 'exec build_email_as_query'