4

我使用 sp_send_dbmail 中的 @query 边界发送一封带有警告列表的电子邮件(警告由 @query 边界返回)。@query 边界在电子邮件中作为文本列出。从@query 边界返回并显示在电子邮件中的所有记录之间都有一个换行符。IE。如果我有 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

4 回答 4

5

旧帖子,但可能值得检查 sp_send_dbmail 的 @query_result_width 参数

请参阅http://technet.microsoft.com/en-us/library/ms190307(v=sql.110).aspx

如果列中的数据宽度超过 @query_result_width(默认为 256),将添加一个新行。

史蒂夫

于 2014-07-15T11:04:30.527 回答
1

我一直使用 CHAR(13)+CHAR(10) 在 tsql 中创建换行符。您必须将其替换为 ' '。

于 2012-11-02T20:27:47.237 回答
1

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

于 2012-11-13T21:38:01.217 回答
0

试试这个,看看你得到了什么......

 @query = REPLACE(@query,CHR(13),'')
于 2012-11-02T20:10:34.873 回答