我在sp_send_dbmail中使用@query周边发送带有警告列表的电子邮件(警告由@query周边返回)。 @query边界在电子邮件中列为文本。从@query边界返回并显示在电子邮件中的所有记录之间都有换行符。即。如果我有4条记录,由于换行符,我会有8行。
如何关闭换行?我阅读了sp_send_dbmail的msdn文章,但没有提到任何可能会影响换行符的属性。
代码:
BEGIN
EXEC MSDB.DBO.sp_send_dbmail
@PROFILE_NAME = 'Alerts',
@RECIPIENTS = @MAIL,
@SUBJECT = @NEWSUBJECT,
@BODY = @NEWBODY,
@QUERY =
'SET NOCOUNT ON
DECLARE @HEXSTRING AS VARCHAR(100)
SET @HEXSTRING = (SELECT HEXADECIMAL_STRING FROM mydb.dbo.statusupdates
WHERE MACHINE_ID = ''1111'' AND DATEDIFF(MI, TIME_DATE_RECEIVED, GETDATE()) <= 60)
SELECT [Warning_Description] FROM mydb.DBO.BINARYTOTABLE(mydb.DBO.HEXTOBINARY(@HEXSTRING)) AS ABB1
JOIN mydb.DBO.WarningMessages ON mydb.DBO.WarningMessages.[Bit_Offset] = ABB1.BITPLACE
WHERE BITVALUE = 1 AND ALERT_LEVEL = ''WARNING''',
@QUERY_RESULT_HEADER = 0,
@ATTACH_QUERY_RESULT_AS_FILE = 0;
END
答案 0 :(得分:4)
旧帖子,但可能值得检查sp_send_dbmail的@query_result_width参数
请参阅http://technet.microsoft.com/en-us/library/ms190307(v=sql.110).aspx
如果列中的数据宽度超过@query_result_width(默认值256),则会添加一个新行。
史蒂夫
答案 1 :(得分:1)
我一直使用CHAR(13)+ CHAR(10)在tsql中创建换行符。你必须用''。
替换它答案 2 :(得分:0)
试一下,看看你得到了什么......
@query = REPLACE(@query,CHR(13),'')
答案 3 :(得分:0)
我最终将所有内容都放入了SP_SEND_DBMAIL的@BODY参数中。 SELECT语句的查询结果可以与常规文本连接成一个字符串,您可以使用HTML格式化生成的文本。