利用SqlServer系統儲存過程sp_send_dbmail傳送郵件例項(二)

CodeAgriculture發表於2014-01-23
上一節已經講解了如何在資料庫中配置資料庫郵件傳送(備註: 資料庫郵件功能是 基於SMTP實現的,首先在系統中 配置SMTP功能。即 在 “新增/刪除程式”皮膚中 “增加/刪除WINDOWS元件”,選中並雙擊 開啟"IIS"或 “應用程式”,勾選 "SMTP SERVICE"然後 一路 點“下一步”即可。一般不需要這一步,直接配置即可)
完成配置後,我們可以結合儲存過程和Job來實現定時從資料庫傳送郵件:
1、建立儲存過程,在新建的儲存過程中呼叫sp_send_dbmail儲存過程(注:程式碼中的\'只是新增程式碼時自動新增的跳脫字元,實質程式碼中只有單引號)
 

點選(此處)摺疊或開啟

  1. Create PROCEDURE [dbo].[sp_send_error_alert]
  2. AS
  3. declare
  4.  @v_content nvarchar(max),
  5.  @v_mail_to nvarchar(500),
  6.  @v_body nvarchar(max),
  7.  @v_titile nvarchar(100)
  8.  ,@v_br_id nvarchar(50)
  9.  ,@v_installments nvarchar(10)
  10.  ,@v_remark nvarchar(100)
  11. BEGIN
  12.  SET NOCOUNT ON;
  13.  set @v_titile=\'測試郵件內容標題;
  14.  set @v_content=\'\';
  15.  
  16.  DECLARE cursor_repayment CURSOR FOR
  17.  SELECT
  18.  br_id
  19.  ,installments
  20.  ,remark
  21.  from dw_account_repayment t
  22.  where
  23.  status!=1
  24.  and is_del=0
  25.  order by t.add_datetime desc;
  26.  
  27.  OPEN cursor_repayment
  28.   FETCH NEXT FROM cursor_repayment INTO
  29.   @v_br_id --標ID
  30.   ,@v_installments --期數
  31.   ,@v_remark --錯誤描述
  32.   WHILE @@FETCH_STATUS=0
  33.   BEGIN
  34.   
  35.   set @v_content=@v_content+\'<tr><td>\'+@v_br_id+\'</td>\'+\'<td>\'+@v_installments+\'</td>\'+\'<td>\'+@v_remark+\'</td></tr>\';
  36.   
  37.   fetch next from cursor_repayment into
  38.   @v_br_id --標ID
  39.   ,@v_installments --期數
  40.   ,@v_remark --錯誤描述
  41.   end;
  42.   
  43.  CLOSE cursor_repayment; --關閉遊標
  44.  DEALLOCATE cursor_repayment; --清空遊標
  45.  
  46.  if LEN(@v_content)>0
  47.  begin
  48.   SET @v_body =\'<html><H1>自動還款所有異常列表</H1><body bgcolor=white><table border = 1><tr><th>標ID</th><th>期數</th><th>錯誤描述</th></tr>\'
  49.   SET @v_body = @v_body + @v_content +\'</table></body></html>\'
  50.   EXEC msdb.dbo.sp_send_dbmail
  51.   @recipients =N\'接收使用者地址1@qq.com;接收使用者地址2@qq.com\',@body = @v_body,@body_format =\'HTML\'
  52.   ,@subject =@v_titile,@profile_name =\'上一節點的配置檔名(db_profiler)\
二、建立Job(SqlServer代理->作業),設定執行引數,定時執行此儲存過程,即可實現定時傳送郵件效果。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28699126/viewspace-1074615/,如需轉載,請註明出處,否則將追究法律責任。

相關文章