前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle触发器简单入门实例

Oracle触发器简单入门实例

作者头像
星哥玩云
发布2022-08-16 15:19:22
3510
发布2022-08-16 15:19:22
举报
文章被收录于专栏:开源部署

最近,老项目新增了日报优化的需求我用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;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档