查询将查询转换为HTML并通过电子邮件发送

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询将查询转换为HTML并通过电子邮件发送相关的知识,希望对你有一定的参考价值。

我使用存储过程将SQL查询转换为html格式的数据。这样我就可以通过电子邮件将这些数据发送给使用sql作业的人。

我使用以下命令发送电子邮件:Query是将SQL Query转换为HTML格式的存储过程

DECLARE @html nvarchar(MAX);
DECLARE @INPUT NVARCHAR(20)
SET @INPUT= ''LATE''
EXEC query @html = @html OUTPUT,  @query = N'select Studentsurname,absencecomment,Absencedate from absence where AbsenceDate=CAST(CAST(GETDATE() AS DATE) AS DATETIME and YearLevel in (11,12) and absencemeaning= @INPUT', @orderBy = N'ORDER BY StudentSurname';

EXEC msdb.dbo.sp_send_dbmail

    @profile_name = 'PROFILE',
    @recipients = 'email@email',
    @subject = 'HTML email',
    @body = @html,
    @body_format = 'HTML',
    @query_no_truncate = 1,
    @attach_query_result_as_file = 0;

我的问题是,当我尝试执行上面的部分时,它给出了一个错误,说'Late'附近的语法不正确

我在将sql查询传递给存储过程时做错了什么。有没有其他方法将SQL查询传递给存储过程?

该问题仅在我使用where子句时发生。如果我的select语句以“from table_name”结尾,那么就不会出现问题。

答案

试试这个

           DECLARE @html nvarchar(MAX);
           DECLARE @INPUT NVARCHAR(20)
           SET @INPUT= '''LATE''' --To add string with Quotes like this..
           Declare @query nvarchar(MAX) = N'select Studentsurname,absencecomment,Absencedate from absence where AbsenceDate=CAST(CAST(GETDATE() AS DATE) AS DATETIME and YearLevel in (11,12) and absencemeaning='+ @INPUT
           , @orderBy varchar(max) = N'ORDER BY StudentSurname';
           print @query --see difference near 'LATE'
           print @orderBy
           EXEC query @html = @html OUTPUT, @query , @orderBy

以上是关于查询将查询转换为HTML并通过电子邮件发送的主要内容,如果未能解决你的问题,请参考以下文章

自动化 Toad Edge 查询以运行并通过电子邮件发送结果

如何使用 SQL Server 通过电子邮件发送包含查询结果的 Excel 工作簿

通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱

python实现查询sql后导出到excel并发送邮件

用Python实现邮件发送Hive明细数据

利用EasySQLMAIL实现自动填写Excel表格并发送邮件