zoukankan      html  css  js  c++  java
  • 数据库邮件

    下面是之前做QC二次开发时实现的一个功能:在数据库中获取各种记录的变更信息,然后通过数据库发送邮件给指定人员;邮件正文以表格形式显示信息。

    实现并不困难,只是我们以往发送邮件都是通过应用层实现,这次是通过数据库层实现,有点不同。

    备注:QC版本为9.2;数据库为Sqlserver 2005。

    – =============================================
    – Author:  chenxuan
    – Create date: 2008-5-20
    – Description: Change Info SendMail
    – =============================================
    ALTER PROCEDURE [dbo].[SendMail]
     AS
    BEGIN
     DECLARE @tableHTML1  NVARCHAR(MAX) ;
     DECLARE @tableHTML2  NVARCHAR(MAX) ;
     DECLARE @tableHTML3  NVARCHAR(MAX) ;
     DECLARE @tableHTML4  NVARCHAR(MAX) ;
     DECLARE @date  VARCHAR(MAX) ;
    SET @tableHTML1 =
        –Plan TestStep Change
     N’<H1>Everest Test Plan TestStep History Daily Report</H1>’ +
        N’<table border=”1″>’ +
        N’<tr><th>Test_Path</th><th>Test_Name</th>’ +
        N’<th>Step_Name</th><th>Change_type</th><th>Change_content</th>’ +
        N’<th>Change_time</th></tr>’ +
        CAST ( ( SELECT td = Test_Path, ”,
                        td = Test_Name, ”,
                        td = Step_Name, ”,
                        td = Change_type, ”,
                        td = Change_content, ”,
                        td = CONVERT(varchar(10), change_time, 120)
                  FROM lenovo_everest_db.dbo.Table_Change
        where CONVERT(varchar(10), change_time, 120) = CONVERT(varchar(10), getdate()-1, 120)
        ORDER BY Test_Path,Test_Name,Step_Name,Change_type
                  FOR XML PATH(‘tr’), TYPE
        ) AS NVARCHAR(MAX) ) +
     N’</table>’ ;

    if (@tableHTML1 is null)
     begin
     SET @tableHTML1 =
     N’<H1>”Everest Test Plan TestStep History Daily Report” No Record</H1>’ +
     N’<table border=”1″>’+
     N’</table>’ ;
     end

    –Plan TestCase Change
    SET @tableHTML2 =
     N’<table border=”1″>’ +
     N’<H1>Everest Test Plan TestCase History Daily Report</H1>’ +
     N’<tr><th>Test_Path</th><th>Test_Name</th>’ +
        N’<th>Change_type</th>’ +
        N’<th>Change_time</th></tr>’ +
        CAST ( ( SELECT td = Test_Path, ”,
                        td = Test_Name, ”,
                        td = Change_type, ”,
                        td = CONVERT(varchar(10), Change_Time, 120)
                  FROM lenovo_everest_db.dbo.Table_TestChange
        where (CONVERT(varchar(10), Change_Time, 120) = CONVERT(varchar(10), GETDATE()-1, 120))
        ORDER BY Test_Path, Test_Name, Change_Type
                  FOR XML PATH(‘tr’), TYPE
        ) AS NVARCHAR(MAX) ) +
     N’</table>’ ;

    if (@tableHTML2 is null)
     begin
     SET @tableHTML2 =
     N’<H1>”Everest Test Plan TestCase History Daily Report” No Record</H1>’ +
     N’<table border=”1″>’+
     N’</table>’ ;
     end

    –Lab TestStep Change
    SET @tableHTML3 =
     N’<table border=”1″>’ +
     N’<H1>Everest Test Lab TestStep History Daily Report</H1>’ +
     N’<tr><th>TestSet_Path</th><th>TestSet_Name</th>’ +
        N’<th>Test_Name</th><th>Step_Name</th>’ +
     N’<th>Change_Type</th><th>Change_Content</th>’ +
        N’<th>Change_time</th></tr>’ +
        CAST ( ( SELECT td = TestSet_Path, ”,
                        td = TestSet_Name, ”,
         td = Test_Name, ”,
         td = Step_Name, ”,
         td = Change_Type, ”,
                        td = Change_Content, ”,
                        td = CONVERT(varchar(10), Change_Time, 120)
                  FROM lenovo_everest_db.dbo.Table_LabChange
        where CONVERT(varchar(10), change_time, 120) = CONVERT(varchar(10), getdate()-1, 120)
         ORDER BY TestSet_Path,TestSet_Name,Test_Name,Step_Name,Change_type
                  FOR XML PATH(‘tr’), TYPE
        ) AS NVARCHAR(MAX) ) +
     N’</table>’ ;
     
     if (@tableHTML3 is null)
     begin
     SET @tableHTML3 =
     N’<H1>”Everest Test Lab TestStep History Daily Report” No Record</H1>’ +
     N’<table border=”1″>’+
     N’</table>’ ;
     end

    –Lab TestCase Change
    SET @tableHTML4 =
     N’<table border=”1″>’ +
     N’<H1>Everest Test Lab TestCase History Daily Report</H1>’ +
     N’<tr><th>TestSet_Path</th><th>TestSet_Name</th>’ +
        N’<th>Test_Name</th><th>Change_Type</th>’ +
        N’<th>Change_time</th></tr>’ +
        CAST ( ( SELECT td = TestSet_Path, ”,
                        td = TestSet_Name, ”,
         td = Test_Name, ”,
                        td = Change_type, ”,
                        td = CONVERT(varchar(10), Change_Time, 120)
                  FROM lenovo_everest_db.dbo.Table_TestLabChange
        where CONVERT(varchar(10), change_time, 120) = CONVERT(varchar(10), getdate()-1, 120)
         ORDER BY TestSet_Path,TestSet_Name,Test_Name,Change_type
                  FOR XML PATH(‘tr’), TYPE
        ) AS NVARCHAR(MAX) ) +
     N’</table>’ ;

    if (@tableHTML4 is null)
     begin
     SET @tableHTML4 =
     N’<H1>”Everest Test Lab TestCase History Daily Report” No Record</H1>’ +
     N’<table border=”1″>’+
     N’</table>’ ;
     end
     SET @tableHTML1 = @tableHTML1+@tableHTML2+@tableHTML3+@tableHTML4+’Any question,please contact the QC admin wangjza@lenovo.com’
     SET @date = ‘”Everest Test Plan&Lab History Daily Report”_’+CONVERT(varchar(10), getdate()-1, 120)
     
     –Send
     EXEC msdb.dbo.sp_send_dbmail
     @profile_name = ‘tduser’,
     @recipients = xx@163.com’,
     @body_format = ‘HTML’,
     @subject = @date,–’Everest Test Plan&Lab History Daily Report’,
     @body = @tableHTML1
    END

  • 相关阅读:
    ubuntu下安装jupyter notebook问题。ERROR: Package ‘ipython‘ requires a different Python: 3.5.2 not in 」=3.6
    VmWare虚拟机设置ubuntu和windows之间的共享文件夹
    标准测试宏选项
    C库函数、系统函数等调用错误的处理方法
    比atoi()函数更健壮的一类包装函数
    系统函数和C库函数调用的几种错误处理方法
    经典生产者-消费者问题解析
    linux下的并发编程详解
    一文学会GDB操作命令
    Stm32CubeMx lwip+freeRTOS TCP 服务
  • 原文地址:https://www.cnblogs.com/chenxuan/p/1738416.html
Copyright © 2011-2022 走看看