sqlserver数据库使用存储过程和dbmail实现定时发送

2023年 4月 19日 42.8k 0

上文已讲过如何在数据库中配置数据库邮件发送(备注: 数据库邮件功能是 基于SMTP实现的,首先在系统中 配置SMTP功能。即 在 “添加/删除程序”面板中 “增加/删除WINDOWS组件”,选中

上文已讲过如何在数据库中配置数据库邮件发送(备注: 数据库邮件功能是 基于SMTP实现的,首先在系统中 配置SMTP功能。即 在 “添加/删除程序”面板中 “增加/删除WINDOWS组件”,选中并双击 打开"IIS"或 “应用程序”,勾选 "SMTP SERVICE"然后 一路 点“下一步”即可。一般不需要这一步,直接配置即可)本文给出一个使用实例,结合存储过程和Job来实现定时从数据库发送邮件:1、创建存储过程,在新建的存储过程中调用sp_send_dbmail存储过程(注:代码中的\'只是添加代码时自动添加的转义字符,实质代码中只有单引号)

复制代码 代码如下:Create PROCEDURE [dbo].[sp_send_error_alert]ASdeclare@v_contentnvarchar(max),@v_mail_tonvarchar(500),@v_bodynvarchar(max),@v_titilenvarchar(100),@v_br_idnvarchar(50),@v_installmentsnvarchar(10),@v_remarknvarchar(100)BEGINSETNOCOUNTON;set@v_titile=\'测试邮件内容标题;set@v_content=\'\';

DECLAREcursor_repaymentCURSORFORSELECTbr_id,installments,remarkfromdw_account_repaymenttwherestatus!=1andis_del=0orderbyt.add_datetimedesc;

OPENcursor_repaymentFETCHNEXTFROMcursor_repaymentINTO@v_br_id--标ID,@v_installments--期数,@v_remark--错误描述WHILE@@FETCH_STATUS=0BEGIN

set@v_content=@v_content+\'<tr><td>\'+@v_br_id+\'</td>\'+\'<td>\'+@v_installments+\'</td>\'+\'<td>\'+@v_remark+\'</td></tr>\';

fetchnextfromcursor_repaymentinto@v_br_id--标ID,@v_installments--期数,@v_remark--错误描述end;

CLOSEcursor_repayment;--关闭游标DEALLOCATEcursor_repayment;--清空游标

ifLEN(@v_content)>0beginSET@v_body=\'<html><H1>自动还款所有异常列表</H1><bodybgcolor=white><tableborder=1><tr><th>标ID</th><th>期数</th><th>错误描述</th></tr>\'SET@v_body=@v_body+@v_content+\'</table></body></html>\'EXECmsdb.dbo.sp_send_dbmail@recipients=N\'接收用户地址1@qq.com;接收用户地址2@qq.com\',@body=@v_body,@body_format=\'HTML\',@subject=@v_titile,@profile_name=\'上一节点的配置文件名(db_profiler)\

创建Job(SqlServer代理->作业),设置执行参数,定时执行此存储过程,即可实现定时发送邮件效果。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论