|
1.触发器实例:- --创建触发器
- create or replace trigger test_trigger2
- --触发器是在insert或update动作之后执行的
- after insert or update
- --作用于dms.kqm_leaveapply表的每一行
- on dms.kqm_leaveapply
- --这里默认为new ,old 怕与其他变量有冲突,则做了修改
- referencing new as new_val old as old_val
- for each row
- --触发器限制条件
- when (new_val.statusname = '核准')
- --触发器描述语句中,新数据使用new_val进行引用,在下面的操作语句中,新数据使用:new_val进行引用
- declare --声明变量
- st_str varchar2(100);
- et_str varchar2(100);
- time1 number;
- time2 number;
- ......
- begin
- ......
- --查询结果集,进行遍历
- for daylist in (
- --查询出指定时间段内的所有日期
- select to_char(:new_val.startdate+rownum-1,'yyyymmdd') as dd
- from dual
- connect by rownum <=
- trunc(:new_val.enddate - :new_val.startdate)+1
- )
- loop
-
- --写要进行操作的逻辑
- ......
- --更新另外一张表的数据
- update dms.d_dailyreport_t d set d.shours = (8 - ItemValue)
- where d.personcode = :new_val.workno and to_char(d.ftime,'yyyy/mm/dd') like to_char(daylist.dd,'yyyy/mm/dd') ;
- end loop;
-
- --substr()数据截取
- st_str :=substr(:new_val.starttime,1,2) || substr(:new_val.starttime,4,2) ;
- et_str := substr(:new_val.endtime,1,2) || substr(:new_val.endtime,4,2) ;
- time1 := to_number(st_str);
- time2 := to_number(et_str);
- if(Item_m<0) then
- Item_m := Item_m *(-1);
- tHour := tHour -1;
- end if;
- end test_trigger2;
复制代码 上面的触发器例子,只是一个框架,并不能执行,这里只做简单的记录,网上的例子有很多,稍微看一下就能简单入门了,这里就不多做记录与说明了~~
|
|