我想发送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'
答案 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'