create or replace trigger tr_LJ_YZMX00_ForHLCP after update or insert or delete on LJ_YZMX00 referencing new as new old as old for each row declare ls_cou number(2); ls_zxrq LJ_YZMX00.KSRQ00%Type; ls_zxrq1 LJ_YZMX00.KSRQ00%Type; ls_tzrq LJ_YZMX00.KSRQ00%Type; ls_tzrq1 LJ_YZMX00.KSRQ00%Type; -- Person Date Comments -- dsm 2011.04.28 创建; -- dsm 2011.11.15 增加:NEW.SYFW00=2的数据 -- dsm 2012.02.28 写入BZ0000 for BQ-20120228-001; -- dsm 2012.06.01 LJ_HLZXJL增加BRZXJD,JHSJ00 for BQ-20120521-001 -- dsm 2012.12.17 增加 :NEW.CLBZ00='2' for ZYYS-20121217-001(不是这个需求改的,夏小钟提出) Begin ls_zxrq1 :=:old.ksrq00; ls_tzrq1 :=:old.tzrq00; if inserting and (:NEW.SYFW00=3 or :NEW.SYFW00=2)then ls_zxrq:=:NEW.ksrq00; if :NEW.CLBZ00='1' or :NEW.CLBZ00='3' or :NEW.CLBZ00='2' then insert into LJ_HLZXJL (ZXID00,ZRZCID,ZYID00,LJYZMX,JHMXID, ZXRQ00,SFZX00,CJRBH0,CJRQ00,CJSJ00,GLMXID,BZ0000,JSRQ00,BRZXJD,JHSJ00) values(SQ_LJ_HLZXJL_ZXID00.nextval,:NEW.ZRZCID,:NEW.ZYID00,:NEW.LJYZMX,:NEW.JHMXID ,ls_ZXRQ,'0',0,TO_CHAR(sysdate,'YYYYMMDD'),TO_CHAR(sysdate,'HH24:MI:SS'),:NEW.GLMXID,:NEW.BZ0000,:NEW.tzrq00,:NEW.BRZXJD,:NEW.JHSJ00); else while ls_zxrq<=:NEW.tzrq00 loop insert into LJ_HLZXJL (ZXID00,ZRZCID,ZYID00,LJYZMX,JHMXID, ZXRQ00,SFZX00,CJRBH0,CJRQ00,CJSJ00,GLMXID,BZ0000,JSRQ00,BRZXJD,JHSJ00) values(SQ_LJ_HLZXJL_ZXID00.nextval,:NEW.ZRZCID,:NEW.ZYID00,:NEW.LJYZMX,:NEW.JHMXID ,ls_ZXRQ,'0',0,TO_CHAR(sysdate,'YYYYMMDD'),TO_CHAR(sysdate,'HH24:MI:SS'),:NEW.GLMXID,:NEW.BZ0000,ls_ZXRQ,:NEW.BRZXJD,:NEW.JHSJ00); ls_zxrq:=to_char(to_date(ls_zxrq,'YYYYMMDD')+1,'YYYYMMDD'); end loop; end if; end if; if updating and (:NEW.SYFW00=3 or :NEW.SYFW00=2) /*and (:NEW.KSRQ00<>:OLD.KSRQ00 or :NEW.TZRQ00<>:OLD.TZRQ00)*/ then--修改模板和调整流程,可能引起KSRQ00,TZRQ00的变化 delete LJ_HLZXJL where ZRZCID=:OLD.ZRZCID and LJYZMX=:OLD.LJYZMX and SFZX00='0'; ls_zxrq:=:NEW.ksrq00; if :NEW.CLBZ00='1' or :NEW.CLBZ00='3' or :NEW.CLBZ00='2' then select count(*) into ls_cou from LJ_HLZXJL where ZRZCID=:NEW.ZRZCID and LJYZMX=:NEW.LJYZMX ; if ls_cou=0 then insert into LJ_HLZXJL (ZXID00,ZRZCID,ZYID00,LJYZMX,JHMXID, ZXRQ00,SFZX00,CJRBH0,CJRQ00,CJSJ00,GLMXID,BZ0000,JSRQ00,BRZXJD,JHSJ00) values(SQ_LJ_HLZXJL_ZXID00.nextval,:NEW.ZRZCID,:NEW.ZYID00,:NEW.LJYZMX,:NEW.JHMXID ,ls_ZXRQ,'0',0,TO_CHAR(sysdate,'YYYYMMDD'),TO_CHAR(sysdate,'HH24:MI:SS'),:NEW.GLMXID,:NEW.BZ0000,:NEW.tzrq00,:NEW.BRZXJD,:NEW.JHSJ00); end if; else while ls_zxrq<=:NEW.tzrq00 loop select count(*) into ls_cou from LJ_HLZXJL where ZRZCID=:NEW.ZRZCID and LJYZMX=:NEW.LJYZMX and ZXRQ00=ls_zxrq; if ls_cou=0 then insert into LJ_HLZXJL (ZXID00,ZRZCID,ZYID00,LJYZMX,JHMXID, ZXRQ00,SFZX00,CJRBH0,CJRQ00,CJSJ00,GLMXID,BZ0000,JSRQ00,BRZXJD,JHSJ00) values(SQ_LJ_HLZXJL_ZXID00.nextval,:NEW.ZRZCID,:NEW.ZYID00,:NEW.LJYZMX,:NEW.JHMXID ,ls_ZXRQ,'0',0,TO_CHAR(sysdate,'YYYYMMDD'),TO_CHAR(sysdate,'HH24:MI:SS'),:NEW.GLMXID,:NEW.BZ0000,ls_ZXRQ,:NEW.BRZXJD,:NEW.JHSJ00); end if; ls_zxrq:=to_char(to_date(ls_zxrq,'YYYYMMDD')+1,'YYYYMMDD'); end loop; end if; end if; if deleting and (:NEW.SYFW00=3 or :NEW.SYFW00=2) then delete LJ_HLZXJL where ZRZCID=:OLD.ZRZCID and LJYZMX=:OLD.LJYZMX; end if; exception when others then raise_application_error(-20002,substr(nvl(sqlerrm, '原因不明出错')||'!*',1,220)); End tr_LJ_YZMX00_ForHLCP;