博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle觸發器調用procedure寄信
阅读量:6265 次
发布时间:2019-06-22

本文共 2591 字,大约阅读时间需要 8 分钟。

最近寫了一直Web Service給很多不同站的客戶端呼叫,并直接寄信通知程式中的異常。

直接在oracle中設置某張表的trigger(after insert),當有新的異常資料寫入時候,寄給相關站別的管理員。

 

/* Written by milo on 2017-03-09*觸發器發送email*/CREATE OR REPLACE TRIGGER small_program_exception_afin  AFTER INSERT ON small_program_exception  FOR EACH ROWDECLARE  l_html         VARCHAR2(32767);  v_station_name varchar(300);  v_email_string varchar2(1000);  v_program_name varchar2(300);  v_station_code varchar(300);BEGIN  /*  dbms_output.put_line('new.station: ' || :new.station);  dbms_output.put_line('new.program_id: ' || :new.program_id);  dbms_output.put_line('new.occurred_time: ' ||                       to_char(:new.occurred_time, 'yyyy-mm-dd hh24:mm:ss'));  dbms_output.put_line('new.program_id: ' ||                       substr(:new.exception_message, 1, 32767));  */  BEGIN    --獲取程式名稱、接收人email以及站名稱    select s.stn_name, m.mail_for_error, p.name,s.stn_code      into v_station_name, v_email_string, v_program_name,v_station_code      from tk_cust_prog_m m, tk_cust_prog_d d, station s, tk_programe p     where m.custom_no = d.custom_no       and m.custom_no = s.stn_code       and d.prog_id = p.id       and d.prog_id = :new.program_id       and d.custom_no = :new.station;  exception    when no_data_found then      raise_application_error(-20001, 'No data found.');      --dbms_output.put_line('no_data_found');      --dbms_output.put_line('v_email_string: ' || v_email_string);      if (v_email_string is null or v_email_string = ' ') then        raise_application_error(-20001,                                'Errors email recipient should not be empty, please type the recipient''s email address on the web-function');      end if;  END;  l_html := '    

Dear ' || v_station_code || '

This email is to notify you that an unexpected error occurred in the program. Please check it ASAP.

Exception Message

------------------------------------------------------------------------------

' || v_station_name || '

' || v_program_name || '

Posted on ' || to_char(:new.occurred_time, 'mm-dd-yyyy hh24:mm:ss') || '

' || substr(:new.exception_message, 1, 32767) || '

------------------------------------------------------------------------------

'; send_mail(p_to => v_email_string, p_from => 'milo@***.com', -- ***@oecgroup.com p_subject => 'Program Occurred Errors Notice', p_text_msg => '', p_html_msg => l_html, p_smtp_host => 'spam.***.com', p_account => 'milo@***.com', p_password => '***'); END;/

 

转载于:https://www.cnblogs.com/milo-xie/p/6534944.html

你可能感兴趣的文章
Windows Server 2016-Nano Server介绍
查看>>
未来架构师的平台战略范例(4)_大数据
查看>>
Grizzly学习笔记(二)
查看>>
思科路由器动态VTI IPSec***配置
查看>>
***S启动时遇到1053错误
查看>>
CentOS7.5 使用 kubeadm 安装配置 Kubernetes1.12(四)
查看>>
shell脚本实现对系统的自动分区
查看>>
Tokyo Tyrant基本规范(5)--教程
查看>>
理解图形化执行计划 -- 第3部分:分析执行计划
查看>>
90后美女的全能测试蜕变之路
查看>>
audit.rules
查看>>
Windows 10企业批量部署实战之WDS配置
查看>>
百元百鸡问题
查看>>
Microsoft System Center 2012部署(二)
查看>>
谈谈网站安全性的问题
查看>>
SQL Server 2017 AlwaysOn AG 自动初始化(三)
查看>>
AIX+RAC数据服务器开关机流程
查看>>
网关配置错误导致Outlook无法连线
查看>>
MongoDB查询 之 数组、内嵌文档和$where
查看>>
MS UC 2013-0-Prepare Tool
查看>>