SQL 服务器 2008:sp_send_dbmail

SQL Server 2008 : sp_send_dbmail

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

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

E.G 如果查询 returns 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