一、 数据库开启数据库邮件功能,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
----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
三、两种结果截图如下: