-1

有没有办法可以在以下查询中添加时间作为我的电子邮件正文:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'TEST_DEV',
    @recipients = 'xxx@gmail.com',
    @query = ' select 
            Percentage = CONVERT(DECIMAL(10,1),100 - (CAST(COUNT(DISTINCT case when PD.Exception  != ' ' then PD.Id  END) as float)/CAST(COUNT(PD.Id) as float)*100))
         from 
                DataBaseName.dbo.Product P INNER JOIN DataBaseName.dbo.LogProduct PD 
                ON P.LogId = PD.LogId

                WHERE   
                ResponseTime < GETDATE() and  RequestTime > DATEADD(MINUTE, -150, GETDATE())
                ' ,
    @subject = 'Test',
@body = 'Please check the attached file for Providers with Many unsuccessful calls between the time xx an yy',
    @attach_query_result_as_file = 1 ;

在当前行

@body = 'Please check the attached file for info on calls between the time xx an yy',

我想添加 GetDate() 代替 xx 和 DATEADD(MINUTE, -150, GETDATE()) 代替 yy ?

可能吗 ?

declare @body nvarchar(max) 
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DEV',
    @recipients = 'xxx@gmail.com',
    @query = 'exec Database.dbo.spTest' ,
    @subject = 'Test',
 select @body = 'Please check the attached file for info on calls between the time ........................',
    @attach_query_result_as_file = 1 ;

你想让我做这样的事吗?

4

1 回答 1

0

您可以在 EXEC 语句之前声明您的 @body 变量,并使其成为您想要的任何字符串。

编辑

我将其更新为更详细。我没有在任何地方配置 sp_send_dbmail 进行测试,但我认为它应该可以正常工作。我创建了一个名为@bodyMsg 的字符串变量,在存储过程调用之前将其设置为所需的字符串,然后将值传递给sp_send_dbmail 中的@body 变量。

declare @bodyMsg nvarchar(max) 

select @bodyMsg = 'Please check the attached file for info on calls between the time ' + convert(varchar,GETDATE()) + ' and ' + convert(varchar,DATEADD(mm, -150, getdate())) + '.'

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'TEST_DEV',
    @recipients = 'xxx@gmail.com',
    @query = ' select 
            Percentage = CONVERT(DECIMAL(10,1),100 - (CAST(COUNT(DISTINCT case when PD.Exception  != ' ' then PD.Id  END) as float)/CAST(COUNT(PD.Id) as float)*100))
         from 
                DataBaseName.dbo.Product P INNER JOIN DataBaseName.dbo.LogProduct PD 
                ON P.LogId = PD.LogId

                WHERE   
                ResponseTime < GETDATE() and  RequestTime > DATEADD(MINUTE, -150, GETDATE())
                ' ,
    @subject = 'Test',
    @body = @bodyMsg,
    @attach_query_result_as_file = 1 ;

然后只需将@body 变量传递给 sp_send_dbmail 存储过程。可以在这里找到不同的日期时间格式:http ://technet.microsoft.com/en-us/library/ms187928.aspx

于 2013-08-20T17:06:53.710 回答