首页 > 数据库 > MsSQL

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

admin MsSQL 2022-02-09 20:10:28 sqlserver数据库   dbmail   发送邮件   存储过程"

上文已讲过如何在数据库中配置数据库邮件发送(备注: 数据库邮件功能是 基于SMTP实现的,首先在系统中 配置SMTP功能。即 在 “添加/删除程序”面板中 “增加/删除WINDOWS组件”,选中并双击 打开"IIS"或 “应用程序”,勾选 "SMTP SERVICE"然后 一路 点“下一步”即可。一般不需要这一步,直接配置即可)

本文给出一个使用实例,结合存储过程和Job来实现定时从数据库发送邮件:
1、创建存储过程,在新建的存储过程中调用sp_send_dbmail存储过程(注:代码中的\'只是添加代码时自动添加的转义字符,实质代码中只有单引号)

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

DECLAREcursor_repaymentCURSORFOR
SELECT
br_id
,installments
,remark
fromdw_account_repaymentt
where
status!=1
andis_del=0
orderbyt.add_datetimedesc;

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

set@v_content=@v_content+\'\'+@v_br_id+\'\'+\'\'+@v_installments+\'\'+\'\'+@v_remark+\'\';

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

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

ifLEN(@v_content)>0
begin
SET@v_body=\'

自动还款所有异常列表

标ID期数错误描述\'
SET@v_body=@v_body+@v_content+\'\'
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代理->作业),设置执行参数,定时执行此存储过程,即可实现定时发送邮件效果。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:/shujuku/MsSQL/98462.html

留言与评论(共有 0 条评论)
   
验证码:

潘少俊衡

| 桂ICP备2023010378号-4

Powered By EmpireCMS

爱享小站

中德益农

谷姐神农

环亚肥料

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

感谢潘少俊衡友情技术支持