触发器模板

create or replace trigger MM_PICKM_B_TG
    before insert or update or DELETE on MM_PICKM_B FOR EACH ROW
    declare
    cursor WS is SELECT CODE AS WORKSHOP FROM org_dept_v O WHERE O.PK_VID = (SELECT CDEPTVID FROM MM_PICKM M WHERE m.dr = '0' and M.CPICKMID =:NEW.CPICKMID AND ROWNUM = 1);
    cursor ZZ is SELECT CODE AS ZZCODE FROM bd_material B WHERE B.PK_MATERIAL = (SELECT CMATERIALVID FROM MM_PICKM M WHERE m.dr = '0' and M.CPICKMID =:NEW.CPICKMID AND ROWNUM = 1);
    cursor CO is SELECT bd.name AS COLOR FROM BD_DEFDOC BD ,MM_PICKM m where m.dr = '0' and bd.dr = '0' and BD.PK_DEFDOC = m.vfree1 and M.CPICKMID =:NEW.CPICKMID AND ROWNUM = 1 ;
    cursor bm is SELECT B.CODE as ITEMCODE,b.NAME as  ITEMNAME,b.GRAPHID as DRAWNUMBER,b.def8 as STOCKERCODE,b.def8 as STOCKERNAME  FROM BD_MATERIAL B WHERE b.dr = '0' and B.PK_MATERIAL=:NEW.CBMATERIALVID and rownum = 1;
    cursor bd is SELECT d.code as CBPRODUCTORID FROM BD_DEFDOC D WHERE d.dr = '0' and D.PK_DEFDOC=:NEW.CBPRODUCTORID and rownum = 1;
    cursor bs is SELECT s.CODE as SUPCODE,s.NAME as SUPNAME FROM bd_supplier S WHERE s.dr = '0' and S.pk_supplier=:NEW.vbfree2 and rownum = 1;
    cursor bsd is SELECT bs.CODE as WHCODE ,bs.name as WHNAME from bd_materialstock bm,bd_stordoc bs where bm.dr = '0' and bs.dr = '0' and bm.pk_stordoc = bs.pk_stordoc and  Bm.PK_MATERIAL=:NEW.CBMATERIALVID and rownum = 1;
  --  cursor bp is SELECT PS.CODE as STOCKERCODE,PS.name as  STOCKERNAME FROM BD_PSNDOC PS WHERE PS.PK_PSNDOC=:NEW.CSTOCKMANID and rownum = 1;
    cursor bb is SELECT  bd.name  as vdef1 FROM BD_MATERIAL bm,bd_defdoc bd WHERE bm.dr = '0' and bd.dr = '0' and bm.def14 = bd.pk_defdoc and Bm.PK_MATERIAL=:NEW.CBMATERIALVID and rownum = 1;
    cursor bdef is SELECT bd.CODE as pickercode,bd.name as  pickername FROM bd_defdoc bd,BD_MATERIAL b WHERE bd.dr = '0' and b.dr = '0' and bd.pk_defdoc = b.def13 and  B.PK_MATERIAL=:NEW.CBMATERIALVID and rownum = 1;
     cursor bb1 is SELECT bd.name as  unit FROM bd_measdoc bd WHERE bd.dr = '0'  and bd.pk_measdoc =:NEW.CBUNITID and rownum = 1;
    cursor bb2 is SELECT bd.code as GETTYPE  FROM BD_MATERIAL B ,bd_defdoc bd WHERE  b.dr = '0'and bd.dr = '0' and b.def12 = bd.pk_defdoc and B.PK_MATERIAL=:NEW.CBMATERIALVID and rownum = 1;
 WORKSHOP1 varchar2(100);
    ZZCODE1 varchar2(100);
    COLOR1 varchar2(100);
    ITEMCODE1 varchar2(100);
    ITEMNAME1 varchar2(100);
    DRAWNUMBER1 varchar2(100);
    CBPRODUCTORID1 varchar2(100);
    SUPCODE1 varchar2(100);
    SUPNAME1 varchar2(100);
    GETTYPE1 varchar2(100);
    WHCODE1 varchar2(100);
    WHNAME1 varchar2(100);
    STOCKERCODE1 varchar2(100);
    STOCKERNAME1 varchar2(100);
   vdef11 varchar2(100);
    pickercode1 varchar2(100);
     pickername1 varchar2(100);
          unit1 varchar2(100);
           BEGIN
             FOR V_EMP IN WS LOOP        
    WORKSHOP1 := V_EMP.WORKSHOP;
              END LOOP;
               FOR V_EMP IN ZZ LOOP        
    ZZCODE1 := V_EMP.ZZCODE;
              END LOOP;
               FOR V_EMP IN CO LOOP        
    COLOR1 := V_EMP.COLOR;
              END LOOP;
             FOR V_EMP IN bm LOOP        
    ITEMCODE1 := V_EMP.ITEMCODE;
    ITEMNAME1 := V_EMP.ITEMNAME;
    DRAWNUMBER1 := V_EMP.DRAWNUMBER;
        STOCKERCODE1 := V_EMP.STOCKERCODE;
    STOCKERNAME1 := V_EMP.STOCKERNAME;
             END LOOP;
                   FOR V_EMP1 IN bd LOOP        
    CBPRODUCTORID1 := V_EMP1.CBPRODUCTORID;
             END LOOP;
              
                      FOR V_EMP IN bs LOOP        
    SUPCODE1 := V_EMP.SUPCODE;
    SUPNAME1 := V_EMP.SUPNAME;
             END LOOP;
            
                      FOR V_EMP IN bsd LOOP        
    WHCODE1 := V_EMP.WHCODE;
    WHNAME1 := V_EMP.WHNAME;
             END LOOP;
               


                                       FOR V_EMP IN bb LOOP        
   vdef11 := V_EMP.vdef1;
            END LOOP;
                                                   FOR V_EMP IN bdef LOOP        
   pickercode1 := V_EMP.pickercode;
      pickername1 := V_EMP.pickername;
            END LOOP;
              FOR V_EMP IN bb1 LOOP        
   unit1 := V_EMP.unit;
            END LOOP;
                         FOR V_EMP IN bb2 LOOP        
    GETTYPE1 := V_EMP.GETTYPE;
             END LOOP;
                               IF INSERTING THEN
              INSERT INTO MES_NC_MATERIAL_PLAN (WORKSHOP,ZZCODE,COLOR,PLANDATE,ITEMCODE,ITEMNAME,DRAWNUMBER,STATIONCODE,SUPCODE,SUPNAME,UNIT,QTY,GETTYPE,WHCODE,WHNAME,STOCKERCODE,STOCKERNAME,PICKERCODE,PICKERNAME,vdef1,Pk)
              VALUES
              (WORKSHOP1,ZZCODE1,COLOR1,to_char(:new.DREQUIREDATE),ITEMCODE1,ITEMNAME1,DRAWNUMBER1,CBPRODUCTORID1,SUPCODE1,SUPNAME1,unit1,to_char(:new.NUNITUSENUM),GETTYPE1,WHCODE1,WHNAME1,STOCKERCODE1,STOCKERNAME1,pickercode1,pickername1,vdef11,to_char(:new.cpickm_bid));
                END IF;
                
                                                  IF UPDATING THEN
                   if(:new.dr = '1') then
                             delete from MES_NC_MATERIAL_PLAN WHERE Pk=:NEW.cpickm_bid;
                             else
            UPDATE MES_NC_MATERIAL_PLAN
            SET  WORKSHOP=WORKSHOP1,ZZCODE = ZZCODE1,COLOR = COLOR1,PLANDATE = to_char(:new.DREQUIREDATE),ITEMCODE = ITEMCODE1,ITEMNAME = ITEMNAME1,DRAWNUMBER = DRAWNUMBER1,STATIONCODE = CBPRODUCTORID1, SUPCODE = SUPCODE1, SUPNAME = SUPNAME1, UNIT = unit1, QTY = to_char(:new.NUNITUSENUM)
   , GETTYPE = GETTYPE1, WHCODE = WHCODE1, WHNAME = WHNAME1, STOCKERCODE = STOCKERCODE1, STOCKERNAME = STOCKERNAME1, PICKERCODE = '', PICKERNAME = '', vdef1 = vdef11          
      WHERE pk=:NEW.cpickm_bid;
            end if;
            end if;
    
       END;








create or replace trigger BD_MATERIAL_TG
       before INSERT OR update OR DELETE  ON BD_MATERIAL  FOR EACH ROW
           
declare

        BEGIN
        IF INSERTING THEN
          INSERT INTO MES_NC_MATERIAL_LIST (ITEMCODE,ITEMNAME,GETTYPE,pk)
          VALUES(:new.code,:new.name,:new.def12,:NEW.PK_MATERIAL);
        END IF;

                  IF UPDATING THEN
                   if(:new.dr = '1') then
                             delete from MES_NC_MATERIAL_LIST WHERE pk=:NEW.PK_MATERIAL;
                   else
            UPDATE MES_NC_MATERIAL_LIST
            SET  ITEMCODE = :new.code, ITEMNAME = :new.name, GETTYPE = :new.def12
            WHERE pk=:NEW.PK_MATERIAL;
            end if;
            end if;
   END ;

猜你喜欢

转载自blog.csdn.net/qq_35427589/article/details/62237910
今日推荐