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 错误。非常感谢
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 错误。非常感谢