alter procedure [dbo].[EmailSend]
as
begin
---这里可以增加对数据表的查询条件或更多的数据处理;
---将结果放入一个新的数据表,然后将这个新表导出EXCEL文件;
declare @file_path varchar(200);--导出EXCEl文件的路径;
declare @file_name varchar(200);--导出EXCEl的文件名;
declare @file_pathname varchar(200);--导出EXCEl的文件名;
declare @size int;--记录数
declare @subject varchar(50)--发送标题
declare @exec_sql varchar(300);--SQL语句;
---分开定义是为了以后修改路径或文件名更方便。
set @file_path = 'D:\task\'
set @file_name = '已发货未核价清单' + CONVERT(varchar(100), GETDATE(), 112)+'.xls'
set @file_pathname = @file_path+@file_name
set @exec_sql='drop table hejiadan'
exec(@exec_sql)
set @exec_sql ='
select b.cus_no,b.ps_dd,a.prd_no,a.prd_name,c.spc,a.os_no,a.qty into hejiadan from TF_PSS a
left join prdt c on c.prd_no=a.prd_no
left join mf_pss b on a.PS_NO=b.PS_NO
where a.PS_ID=''SA'' and datediff(mm,b.pS_DD,getdate())=1
and a.prd_no not in (
select prd_no from TF_HJ where hj_id=''1''
) ' ---数据表使用的完整路径;
--print @exec_sq
exec(@exec_sql)
set @size=(select count(*) from [DB_001].dbo.hejiadan)
set @exec_sql='select * from [DB_001].dbo.hejiadan'
set @exec_sql = ' bcp "'+@exec_sql+'" queryout "'+@file_path+''+@file_name+'" -c -T -U "sa" -P "A_sasasahmt"'; --保存文件
----U "sa" -P "SQLpassword" 这是数据库的sa账号和密码;
set @subject='本月已送货未核价记录共'+cast(@size as varchar)+'条记录';
exec master..xp_cmdshell @exec_sql
--4.测试邮件是否成功
exec msdb.dbo.sp_send_dbmail
@profile_name = 'SQLServer_DotNetCrazy1', --配置名称
@recipients = 'aaa.139.com;bbb.139.com', --收件名称
@body_format = 'HTML', --内容格式
@subject =@subject,
@body = @file_pathname, --内容
@file_attachments = @file_pathname --附件
--@file_attachments = 'D:\task\employee20220902.xls' --发送附件【该路径下存在文件】
end
SQLServer 使用邮箱推送邮件并带附件
最新推荐文章于 2024-07-29 14:46:17 发布
这是一个SQL存储过程,用于根据特定条件查询数据,创建一个临时数据表,然后将数据导出为Excel文件。使用BCP命令将数据保存到指定路径,并通过SQL Server的sp_send_dbmail发送邮件,附带生成的Excel文件作为附件。
摘要由CSDN通过智能技术生成