程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> sqlserver數據庫使用存儲過程和dbmail實現定時發送郵件

sqlserver數據庫使用存儲過程和dbmail實現定時發送郵件

編輯:關於SqlServer

上文已講過如何在數據庫中配置數據庫郵件發送(備注: 數據庫郵件功能是 基於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+\'<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)>0
begin
SET@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\'接收用戶地址[email protected];接收用戶地址[email protected]\',@body=@v_body,@body_format=\'HTML\'
,@subject=@v_titile,@profile_name=\'上一節點的配置文件名(db_profiler)\

創建Job(SqlServer代理->作業),設置執行參數,定時執行此存儲過程,即可實現定時發送郵件效果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved