SP_SEND_DBMAIL @QUERY将换行符插入电子邮件

时间:2012-11-02 19:30:50

标签: sql-server sql-server-2008 tsql

我在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

4 个答案:

答案 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)在tsq​​l中创建换行符。你必须用''。

替换它

答案 2 :(得分:0)

试一下,看看你得到了什么......

 @query = REPLACE(@query,CHR(13),'')

答案 3 :(得分:0)

我最终将所有内容都放入了SP_SEND_DBMAIL的@BODY参数中。 SELECT语句的查询结果可以与常规文本连接成一个字符串,您可以使用HTML格式化生成的文本。