当前位置:   article > 正文

sqlserver自动邮件发送查询表格_sql查询结果发邮件

sql查询结果发邮件

一、 数据库开启数据库邮件功能,SQL server默认此功能是关闭的;

二、视图或表的查询结果,以邮件的形式发送,格式有一下两种:

----text格式,查询结果以附件形式发送。
EXEC msdb.dbo.sp_send_dbmail
    @recipients='xxxx@kdtmac.com' --邮件接收人
    ,@subject='Test email subject' --邮件主题
    ,@profile_name='mailConfig' --SQL server邮件配置文件名称
   ,@body_format='text'--邮件格式
    ,@query='SELECT [YYMMDD],[empno],[EmpID],[EmpName],[PartName]
    ,[position] FROM [KDT01].[HR].[dbo].[Change]' --查询语句
    ,@attach_query_result_as_file = 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
----html格式,查询结果以网页形式发送。
DECLARE @tableHTML  NVARCHAR(MAX) ;  
DECLARE @count int;
SET @count=CAST((SELECT count(*) FROM [KD].[HR].[dbo].[Change]) AS int);
SET @tableHTML =  
    N'<H1>岗位异动人员</H1>' +  
    N'<table border="1px"  width="700" cellpadding="0" cellspacing="0" align="left">' +  
    N'<tr><th width="200">异动日期</th><th width="150">姓名</th>' +  
    N'<th width="200">部门</th><th width="150">岗位类别</th>' +  
    N'</tr>' +  
    CAST ( ( SELECT td = YYMMDD, '',  
                    td = EmpName, '',  
                    td = PartName, '',  
                    td = position, ''    
              FROM  [KDT-GZGA-APP01].[D1_eHR].[dbo].[V_U9_Change]
              FOR XML PATH('tr'), TYPE ) AS NVARCHAR(MAX) ) +  
    N'</table>' ;  

	IF(@count>0)
	BEGIN
    EXEC msdb.dbo.sp_send_dbmail 
	@recipients='zhangyanbing@kdtmac.com',  
    @subject = '移动人员名单',  
    @body = @tableHTML,  
	@profile_name='mailConfig',
    @body_format = 'HTML' ;  
	END
	ELSE
	BEGIN
	PRINT '结果为0,不发送邮件';
	END
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

三、两种结果截图如下:

在这里插入图片描述
在这里插入图片描述

四、建立数据库作业,定时发送结果。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/728351
推荐阅读
  

闽ICP备14008679号