T-SQL;如何使用 sp_send_dbmail 在 html 格式的 table 前后添加句子

T-SQL; How to add sentences before and after a table in an html format using sp_send_dbmail

MS 图书馆网站展示了如何创建电子邮件并嵌入 html table 结果。 https://msdn.microsoft.com/en-us/library/ms190307.aspx

这很好,但是您应该如何在电子邮件正文中添加开头和结尾的措辞table? (一定很明显吧?)

如果初始代码如下所示,那么最佳输出将是:-

Hi,(carriage return)
Here is a list.(carriage return)
The details are below:(carriage return)

(then table goes here)

(carriage return)
Thank you for looking.(carriage return)
Kind regards(carriage return)
(carriage return)
From us

Table 示例代码:

DECLARE @tableHTML  NVARCHAR(MAX) ;  

SET @tableHTML =  
N'<H1>Work Order Report</H1>' +  
N'<table border="1">' +  
N'<tr><th>Work Order ID</th><th>Product ID</th>' +  
N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +  
N'<th>Expected Revenue</th></tr>' +  
CAST ( ( SELECT td = wo.WorkOrderID,       '',  
                td = p.ProductID, '',  
                td = p.Name, '',  
                td = wo.OrderQty, '',  
                td = wo.DueDate, '',  
                td = (p.ListPrice - p.StandardCost) * wo.OrderQty  
          FROM AdventureWorks.Production.WorkOrder as wo  
          JOIN AdventureWorks.Production.Product AS p  
          ON wo.ProductID = p.ProductID  
          WHERE DueDate > '2004-04-30'  
            AND DATEDIFF(dd, '2004-04-30', DueDate) < 2   
          ORDER BY DueDate ASC,  
                   (p.ListPrice - p.StandardCost) * wo.OrderQty DESC  
          FOR XML PATH('tr'), TYPE   
) AS NVARCHAR(MAX) ) +  
N'</table>' ;  

EXEC msdb.dbo.sp_send_dbmail @recipients='yourfriend@Adventure-Works.com',  
@subject = 'Work Order List',  
@body = @tableHTML,  
@body_format = 'HTML' ; 

改用这个...

DECLARE @header NVARCHAR(MAX)
DECLARE @footer NVARCHAR(MAX)
DECLARE @tableHTML  NVARCHAR(MAX) ;  

SET @header = 'Hi, </br> Here is a list. </br> The details are below </br>'
SET @footer = '</br> Thank you for looking. </br> Kind regards </br> From us'

SET @tableHTML = @header +  
N'<H1>Work Order Report</H1>' +  
N'<table border="1">' +  
N'<tr><th>Work Order ID</th><th>Product ID</th>' +  
N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +  
N'<th>Expected Revenue</th></tr>' +  
CAST ( ( SELECT td = wo.WorkOrderID,       '',  
                td = p.ProductID, '',  
                td = p.Name, '',  
                td = wo.OrderQty, '',  
                td = wo.DueDate, '',  
                td = (p.ListPrice - p.StandardCost) * wo.OrderQty  
          FROM AdventureWorks.Production.WorkOrder as wo  
          JOIN AdventureWorks.Production.Product AS p  
          ON wo.ProductID = p.ProductID  
          WHERE DueDate > '2004-04-30'  
            AND DATEDIFF(dd, '2004-04-30', DueDate) < 2   
          ORDER BY DueDate ASC,  
                   (p.ListPrice - p.StandardCost) * wo.OrderQty DESC  
          FOR XML PATH('tr'), TYPE   
) AS NVARCHAR(MAX) ) + 
N'</table>' + @footer 


    EXEC msdb.dbo.sp_send_dbmail @recipients='yourfriend@Adventure-Works.com',  
    @subject = 'Work Order List',  
    @body = @tableHTML,  
    @body_format = 'HTML' ; 

这是我的输出

@manderson 我现在已经开始工作了。这是一个我之前没有发现的 html 错误。非常感谢