SQL Server 2008 : sp_send_dbmail



我有以下 SQL,它每天在日常作业中运行。我希望电子邮件中的结果在查询结果的每一行末尾都有一个换行符。

目前,电子邮件将所有内容放在同一行上,而不是SQL查询中每行一行

例如,如果查询返回 10 行,则应将其放在电子邮件中的 10 行而不是连续行上

IF (select count(*) 
    from HSOfficeDocuments h
    where h.Expiry_Date <= dateadd(year, 1, getdate())) > 0
begin
    exec msdb.dbo.sp_send_dbmail
         @profile_name = 'OfficeNotificationsProfile',
         @recipients = 'test@test.com',
         @subject = 'Expiring Office Documents',
         @query = 'select o.office, hs.document_type, h.Expiry_Date 
                   from officesystem.dbo.HSOfficeDocuments h
                   join officesystem.dbo.HS_Document_Type hs on hs.id = h.Document_Type_id
                   join officesystem.dbo.Offices o on o.id = h.office_id
                   where h.Expiry_Date <= dateadd(year, 1, getdate())',
         @query_result_header = 0,
         @body_format = 'HTML'
end

你能试试下面的查询吗?由于邮件正文内容支持 HTML,因此我们可以使用 HTML 代码来格式化结果。

        IF (select COUNT(*) from HSOfficeDocuments h
        where h.Expiry_Date <= DATEADD(year, 1, GETDATE())) > 0
        begin
        exec msdb.dbo.sp_send_dbmail
        @profile_name = 'OfficeNotificationsProfile',
        @recipients = 'test@test.com',
        @subject = 'Expiring Office Documents',
        @query = 'select o.office,  hs.document_type, h.Expiry_Date,''<br>'' from 
        officesystem.dbo.HSOfficeDocuments h
        join officesystem.dbo.HS_Document_Type hs on hs.id = h.Document_Type_id
        join officesystem.dbo.Offices o on o.id = h.office_id
        where h.Expiry_Date <= DATEADD(year, 1, GETDATE())',
        @query_result_header=0,
        @body_format = 'HTML'
        end

相关内容

  • 没有找到相关文章

最新更新