触发器简单编写

来源:互联网 发布:window phone 8软件 编辑:程序博客网 时间:2024/06/05 08:22



CREATE OR REPLACE TRIGGER TG_RUHUJIHUA_ZT_UPDATE BEFORE
UPDATE OF RH_ZHUANGTAI ON RUHUJIHUA FOR EACH ROW
BEGIN
V_DATA_RH_XIACI_CB_RQ date;
  V_DATA_RH_XIACI_CB_RQ = NULL;
 
  IF :OLD.RH_ZHUANGTAI='1' AND :NEW.RH_ZHUANGTAI='2'--执行中 到 待执行
     V_DATA_RH_XIACI_CB_RQ = :NEW.RH_RQXZTJ;
  ELSE
    IF :OLD.RH_ZHUANGTAI='2' AND :NEW.RH_ZHUANGTAI='1'--待执行 到 执行中
    BEGIN
    --频率单位为月,执行日期的年月日+周期的月数,然后截取年月加抄表日
      CASE
       WHEN :NEW.RH_JHZQ='1' THEN
       V_DATA_RH_XIACI_CB_RQ = TO_DATE(TO_CHAR(ADD_MONTHS(:NEW.RH_RQXZTJ,:NEW.RH_JHPL),'YYYYMM')||:NEW.RH_JHRQ,'YYYYMMDD');
      
    --频率单位为天,执行日期的年月日+周期的天数
       WHEN :NEW.RH_JHZQ='2' THEN
        V_DATA_RH_XIACI_CB_RQ = TO_DATE(TO_CHAR(:NEW.RH_RQXZTJ+:NEW.RH_JHPL,'YYYYMM')||:NEW.RH_JHRQ,'YYYYMMDD');
     
    --频率单位为不定期,不做处理
       WHEN :NEW.RH_JHZQ='3' THEN

       ELSE
      
       END

    END
   
    IF V_DATA_RH_XIACI_CB_RQ IS NOT NULL   
       UPDATE RUHUJIHUA
         SET RH_XIACI_CB_RQ = V_DATA_RH_XIACI_CB_RQ;
END;

原创粉丝点击