我有这个发送电子邮件的脚本:
USE msdb
EXEC sp_send_dbmail
@profile_name = 'Mail list',
@recipients = 'bob.jones@company.com',
@subject = 'query results',
@body = 'Result from SELECT appended below.',
@execute_query_database = 'DB',
@query = 'exec usp_DisplayData'
问题是许多列(或它们的别名)非常长,因此电子邮件中的查询结果将如下所示:
SDMI POS Sales Name SDMI POS Purchases
------------------- ------------------
1 Joe 3
没有html,是否有一种方法可以将文本包装在列中,以便在电子邮件中看起来像这样?
SDMI POS Name SDMI POS
Sales Purchases
--------- ---- ---------
1 Joe 3
usp_DisplayData
是一个简单的查询,如下所示:
Create procedure usp_usp_DisplayData
as
select
cast(sales as varchar(16)) as 'SDMI POS Sales',
Name,
cast(purch as varchar(16)) as 'SDMI POS Purchases',
from Sales
答案 0 :(得分:0)
如果您尝试在列别名中插入换行符,则没有运气。在换行符后,纯文本将始终返回到第一个字符。这不会意识到列......
如果可能(取决于您的电子邮件的目标系统),您应该使用0x1110
格式化表格。
在上一条评论中,您会询问function of the linked answer。
ulong
将一个 function sortFlights(sortBy) {
var flightDivs = $("#flights-results .flight-result");
flightDivArray = $.makeArray(flightDivs);
var sortedFlights = flightDivArray.sort(function(a, b){
return $(a).data(sortBy)-$(b).data(sortBy);
});
$("#flights-results .flight-result").remove();
$("#flights-results").append(flightDivArray);
}
类型的参数作为输入(如果您使用带有类名的版本,则更多)并返回一个XML(实际上是XHTML)。
诀窍是,以下内容返回单个标量XML
HTML
内部dbo.CreateHTMLTable()
以XML格式返回,它包含在paranthesis中,因此它将是外部XML
中的单个列。 (有关详情,例如约SELECT
(
SELECT * FROM SomeWhere FOR XML RAW,TYPE
) AS TheXmlResult;
,请阅读相关答案的背景)。
调用很容易(要注意双倍的限制):
SELECT
就是这样......返回值是完整的select
- 表。
ELEMENTS XSINIL
有一个参数可将格式指定为SELECT dbo.CreateHTMLTable((***your select here*** FOR XML RAW,ELEMENTS XSINIL))
。我认为这是
xhtml
你的存储过程是错误的工具(使用啤酒瓶锤击钉子但是......)
sp_send_dbmail
SP已创建以执行某些操作。你的SP在没有其他任何内容,然后阅读。这可以更好地打包到html
中,或者,如果有参数,则打包到内联表值函数 ...
您可以将此@body_format = 'HTML'
直接放入调用上述函数的语句中
Create procedure usp_usp_DisplayData
as
select
[...]