关于一个触发器的实例
来源:互联网 发布:液晶电视编程器价格 编辑:程序博客网 时间:2024/05/15 19:50
CREATE OR REPLACE TRIGGER MAILMODIFY
AFTER INSERT
ON DYNAMIC_ALARM
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
MAIL login.notify_sms%TYPE;
RNAME login.real_name%TYPE;
MES notifytempinfo.message%TYPE;
DALARMID dynamic_alarm.dynamic_alarm_uid%Type;
s Constant Char(1) := ','; -- 逗号分隔条件
c Int := 1; --查找第几个逗号
f Int := 1; -- 从哪开始截取
e Int := 1; -- 记录接却后的位置
pos Int := 0; --共截取几位
CURSOR cur_operation
is
SELECT d.real_name,d.notify_email
from ne e,alarm_def a,r_ne_position b,r_login_position c,login d
where a.ne_uid=:new.ne_uid
and a.alarm_kpi_code=:new.kpi_code
and b.ne_uid=getTopNe(:new.ne_uid)
and b.position_id=c.position_id
and c.login_name=d.login_name
and :new.alarm_level >=d.EMAIL_LEVEL
and d.NOTIFY_EMAIL is not null
and decode(d.CUSTOMIZE_NOTIFY,1,getNotifyTime(d.EMAIL_PERIOD),getZhiBanStatus(d.login_name))>0
and e.ne_uid=:new.ne_uid
and d.login_status=0
and substr(:new.alarm_start_time,9,5)>='01 07';
begin
----------------------------------
dbms_output.put_line('----sssss');
SELECT
DISTINCT e.display_name||'在'||:new.alarm_start_time||decode(:new.alarm_level,1,' 轻微',2,' 重要',' 严重')||'告警:'||a.alarm_def_name||' 值:'||:new.alarm_trigger_value into MES
from v_my_ne e,alarm_def a,r_ne_position b,r_login_position c,login d
where e.login_name=d.login_name
and a.ne_uid=:new.ne_uid
and a.alarm_kpi_code=:new.kpi_code
and b.ne_uid=getTopNe(:new.ne_uid)
and b.position_id=c.position_id
and c.login_name=d.login_name
and :new.alarm_level >=d.EMAIL_LEVEL
and d.NOTIFY_EMAIL is not null
and decode(d.CUSTOMIZE_NOTIFY,1,getNotifyTime(d.EMAIL_PERIOD),getZhiBanStatus(d.login_name))>0
and e.ne_uid=:new.ne_uid
and d.login_status=0
and substr(:new.alarm_start_time,9,5)>='01 07';
dbms_output.put_line('----'||MES);
Exception
When no_data_found Then
MES := '';
/*SELECT dynamic_alarm_uid into DALARMID
from dynamic_alarm
where dynamic_alarm_uid=:new.dynamic_alarm_uid;*/
--打开游标
open cur_operation;
--取出数据
fetch cur_operation into RNAME,MAIL;
--循环
while cur_operation%found
Loop
c := 1; --查找第几个逗号
f := 1; -- 从哪开始截取
e := 1; -- 记录接却后的位置
pos := 0; --共截取几位
Loop
e := instr(MAIL, s, 1, c) ;
pos := e + 1 - f;
If e = 0 Then
insert into mail_temp(mail_uid, mail,
title, content, kpi_code, ne_uid,
dynamic_alarm_uid, real_name,
alarm_level, status)
values (
seq_mail_temp.nextval,
substr(MAIL, f, length(MAIL)),
'APM 监控告警',
MES,
:new.kpi_code,
:new.ne_uid,
:new.dynamic_alarm_uid,
RNAME,
:new.alarm_level,
1
);
Exit;
Else
insert into mail_temp(mail_uid, mail,
title, content, kpi_code, ne_uid,
dynamic_alarm_uid, real_name,
alarm_level, status)
values (
seq_mail_temp.nextval,
substr(MAIL, f, length(MAIL)),
'APM 监控告警',
MES,
:new.kpi_code,
:new.ne_uid,
:new.dynamic_alarm_uid,
RNAME,
:new.alarm_level,
1
);
End If;
f := e + 1;
c := c + 1;
End Loop;
--Create Mail Info End
fetch cur_operation into RNAME,MAIL;
end loop;
--关闭游标
close cur_operation;
------------------------------------
end;
- 关于一个触发器的实例
- 一个关于SQL Server数据库的触发器实例
- mysql触发器语法的一个实例
- SQLite的一个触发器实例3
- 一个触发器实例
- oracle 触发器的实例
- oracle 触发器的实例
- oracle 触发器的实例
- mysql触发器的实例
- 关于枚举的一个实例
- 关于fragment的一个实例
- 一个触发器的例子
- 一个触发器的例子
- 一个触发器的例子
- 一个简单的触发器
- 一个触发器的解释
- 关于触发器的问题?
- 关于触发器的理解
- 防止 ORA-01403: no data found
- Posix多线程编程学习笔记(一)—线程基础(2)
- Head First javaScript(中文版54----58)
- Posix多线程编程学习笔记(二)—线程属性(1)
- Posix多线程编程学习笔记(二)—线程属性(2)
- 关于一个触发器的实例
- Posix多线程编程学习笔记(二)—线程属性(3)
- 利用microsoft ads实现大规模部署Windows 2003 serv
- direct 中的世界矩阵和网面
- ibatis+spring
- spring+JDBC
- 英语学习的几个名言
- 2010年MBA英语的整体备考思路
- 改良与革命