度量快速开发平台-专业、快速的软件定制快开平台
标题:
Oracle触发器简单入门记录
[打印本页]
作者:
fteair
时间:
2020-3-25 17:26
标题:
Oracle触发器简单入门记录
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;
复制代码
上面的触发器例子,只是一个框架,并不能执行,这里只做简单的记录,网上的例子有很多,稍微看一下就能简单入门了,这里就不多做记录与说明了~~
作者:
fteair
时间:
2020-3-26 17:58
作者:
fteair
时间:
2020-3-26 17:59
作者:
fteair
时间:
2020-3-26 17:59
作者:
fteair
时间:
2020-3-27 14:35
作者:
fteair
时间:
2020-3-27 14:36
作者:
fteair
时间:
2020-3-27 14:36
欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/)
Powered by Discuz! X3.2