zoukankan      html  css  js  c++  java
  • TRIGGER_15.8.3BACKUP

    1

    CREATE OR REPLACE TRIGGER "XMV502"."ADDAREA12"
    
      before insert on bd_areacl  
      for each row
    declare
      -- local variables here
      vsupply char(40);
      vname char(20); 
      i number;
    begin  
        
      for i in 2..12 loop
        
        
     select areaclname  into vname from bd_areacl where pk_areacl=:new.pk_fatherarea;
      if length(:new.areaclcode)='8' and substr(:new.areaclcode,-2,2)='01'
       
        then
            case 
    
        when i=2 then vsupply:='块材类供应商名录';
        when i=3 then vsupply:='水泥类供应商名录';
        when i=4 then vsupply:='木材类供应商名录';
        when i=5 then vsupply:='金属类供应商名录';
        when i=6 then vsupply:='高分子材料类供应商名录';
        when i=7 then vsupply:='电工材料类供应商名录';
        when i=8 then vsupply:='安全防护用品器材供应商名录';
        when i=9 then vsupply:='其他材料类供应商名录';
        when i=10 then vsupply:='器材租赁供应商名录';
        when i=11 then vsupply:='专业分包供应商名录';     
        else vsupply:='税款、投标类他项名录'; 
         end case;
          insert into bd_areacl 
          (
            areaclcode,
            areaclname,
            def1,
            def2,
            def3,
            def4,
            def5,
            dr,
            mnecode,
            pk_areacl,
            pk_corp,
            pk_fatherarea,
            ts
            )
          values
            (
             substr(:new.areaclcode,0,6)||lpad(i,2,'0'),
             trim(replace(vname,'',''))||vsupply ,
             :new.def1,
             :new.def2,
             :new.def3,
             :new.def4,
             :new.def5,
             :new.dr,
             :new.mnecode,
             lpad(i,2,'0')||substr(:new.pk_areacl,-18,18),
             :new.pk_corp,
             :new.pk_fatherarea,
             :new.ts
             );
           
        end if;      
    end loop;
    end ADDAREA12;

    2

    CREATE OR REPLACE TRIGGER "XMV502"."ADDARECL"
      before insert on bd_areacl
      for each row
    declare
      -- local variables here
    
      pk_bas char(20);
    
      cursor basjob(id char) is
        select pk_areacl
          from ncv5.bd_areacl /*目标数据库表*/
         where pk_areacl = id
           and nvl(dr, 0) = 0;
    begin
      /*判断数据是否在目标数据库存在*/
      open basjob(:new.pk_areacl);
    
      loop
    
        fetch basjob
          into pk_bas;
    
        exit when basjob%notfound;
    
      end loop;
      close basjob;
      /******************************/
    
      if pk_bas is null then
        begin
          insert into ncv5.bd_areacl /*目标数据库表*/
            (
            areaclcode,
            areaclname,
            def1,
            def2,
            def3,
            def4,
            def5,
            dr,
            mnecode,
            pk_areacl,
            pk_corp,
            pk_fatherarea,
            ts
            )
          values
            (
             :new.areaclcode,
             :new.areaclname,
             :new.def1,
             :new.def2,
             :new.def3,
             :new.def4,
             :new.def5,
             :new.dr,
             :new.mnecode,
             :new.pk_areacl,
             :new.pk_corp,
             :new.pk_fatherarea,
             :new.ts
             );
        end;
    
      end if;
    end addarecl;

    3

    CREATE OR REPLACE TRIGGER "XMV502"."ADDBANK"
      before insert on bd_accbank
      for each row
    declare
      -- local variables here
    
      pk_bas char(20);
    
      cursor basjob(id char) is
        select pk_accbank
          from ncv5.bd_accbank /*目标数据库表*/
         where pk_accbank = id
           and nvl(dr, 0) = 0;
    begin
      /*判断数据是否在目标数据库存在*/
      open basjob(:new.pk_accbank);
    
      loop
    
        fetch basjob
          into pk_bas;
    
        exit when basjob%notfound;
    
      end loop;
      close basjob;
      /******************************/
    
      if pk_bas is null then
        begin
          insert into ncv5.bd_accbank /*目标数据库表*/
            (pk_corp,
             bankacc,
             bankname,
             accopendate,
             address,
             tel,
             contactpsn,
             sealflag,
             memo,
             netbankflag,
             banktype,
             areacode,
             unitname,
             bankowner,
             pk_settlecent,
             pk_settleunit,
             genebranprop,
             ctlprop,
             arapprop,
             pk_accid,
             combineaccnum,
             orgnumber,
             branchname,
             bankarea,
             province,
             city,
             remcode,
             iscontrolled,
             beginmny,
             beginmnydate,
             abcarea,
             pk_createunit,
             groupid,
             netqueryflag,
             pk_currtype,
             isautoreturn,
             pk_accbank,
             def2,
             def3,
             def4,
             def5,
             def1,
             custcode,
             groupaccount,
             signflag,
             ts,
             dr)
          values
            (:new.pk_corp,
             :new.bankacc,
             :new.bankname,
             :new.accopendate,
             :new.address,
             :new.tel,
             :new.contactpsn,
             :new.sealflag,
             :new.memo,
             :new.netbankflag,
             :new.banktype,
             :new.areacode,
             :new.unitname,
             :new.bankowner,
             :new.pk_settlecent,
             :new.pk_settleunit,
             :new.genebranprop,
             :new.ctlprop,
             :new.arapprop,
             :new.pk_accid,
             :new.combineaccnum,
             :new.orgnumber,
             :new.branchname,
             :new.bankarea,
             :new.province,
             :new.city,
             :new.remcode,
             :new.iscontrolled,
             :new.beginmny,
             :new.beginmnydate,
             :new.abcarea,
             :new.pk_createunit,
             :new.groupid,
             :new.netqueryflag,
             :new.pk_currtype,
             :new.isautoreturn,
             :new.pk_accbank,
             :new.def2,
             :new.def3,
             :new.def4,
             :new.def5,
             :new.def1,
             :new.custcode,
             :new.groupaccount,
             :new.signflag,
             :new.ts,
             :new.dr);
        end;
    
      end if;
    end addBank;

    4

    CREATE OR REPLACE TRIGGER "XMV502"."ADDBD_ACCBANK_FTS"
      before insert on bd_accbank_fts
      for each row
    declare
      -- local variables here
    
      pk_bas char(20);
    
      cursor basjob(id char) is
        select pk_accbank
          from ncv5.bd_accbank_fts /*目标数据库表*/
         where pk_accbank = id
           and nvl(dr, 0) = 0;
    begin
      /*判断数据是否在目标数据库存在*/
      open basjob(:new.pk_accbank_fts);
    
      loop
    
        fetch basjob
          into pk_bas;
    
        exit when basjob%notfound;
    
      end loop;
      close basjob;
      /******************************/
    
      if pk_bas is null then
        begin
          insert into ncv5.bd_accbank_fts /*目标数据库表*/
            (arapprop,
             beginmny,
             beginmnydate,
             ctlprop,
             dr,
             genebranprop,
             iscontrolled,
             pk_accbank,
             pk_accbank_fts,
             pk_accid,
             pk_corp,
             pk_createunit,
             pk_settlecent,
             pk_settleunit,
             ts)
          values
            (:new.arapprop,
             :new.beginmny,
             :new.beginmnydate,
             :new.ctlprop,
             :new.dr,
             :new.genebranprop,
             :new.iscontrolled,
             :new.pk_accbank,
             :new.pk_accbank_fts,
             :new.pk_accid,
             :new.pk_corp,
             :new.pk_createunit,
             :new.pk_settlecent,
             :new.pk_settleunit,
             :new.ts);
        end;
    
      end if;
    end addBd_accbank_fts;

    5 noUSER

    CREATE OR REPLACE TRIGGER "XMV502"."ADDBD_CUSTBANK"
      before insert on bd_custbank
      for each row
    declare
      pk_bas char(20);
    
      cursor basjob(id char) is
        select pk_custbank
          from ncv5.bd_custbank /*目标数据库表*/
         where pk_custbank = id
           and nvl(dr, 0) = 0;
    begin
      /*判断数据是否在目标数据库存在*/
      open basjob(:new.pk_custbank);
    
      loop
    
        fetch basjob
          into pk_bas;
    
        exit when basjob%notfound;
    
      end loop;
      close basjob;
      /******************************/
    
      if pk_bas is null then
    
        begin
    
          insert into ncv5.bd_custbank /*目标数据库表*/
            (pk_custbank,
             pk_cubasdoc,
             accname,
             account,
             accaddr,
             defflag,
             memo,
             pk_accbank,
             pk_corp,
             pk_currtype,
             ts,
             dr)
          values
            (:new.pk_custbank,
             :new.pk_cubasdoc,
             :new.accname,
             :new.account,
             :new.accaddr,
             :new.defflag,
             :new.memo,
             :new.pk_accbank,
             :new.pk_corp,
             :new.pk_currtype,
             :new.ts,
             :new.dr);
        end;
    
      end if;
    
    end addbd_custbank;

    6

    CREATE OR REPLACE TRIGGER "XMV502"."ADDC4"
      before insert on bd_cubasdoc
      for each row
    declare
      -- local variables here
      v_exp varchar2(200);
      
    begin
      
         --空格的客商
        if  regexp_like(:new.custname,'[[:space:]]')
         then raise_application_error(-20001, '客商名称:' || :new.custname || '有空格,请修改');
            end if;
            
         --重复名称、营业执照、纳税人登记号客商
        select case
                 when custname = :new.custname then
                  '客商名称:' || :new.custname || '已存在,请在已有客商修改增行!'
                 when engname = :new.engname and length(:new.engname) > 3 then
                  '客商营业执照:' || :new.engname || '已存在,请在已有客商修改增行!'
                 when taxpayerid = :new.taxpayerid and length(:new.taxpayerid) > 3 then
                  '客商纳税人登记号:' || :new.taxpayerid || '已存在,请在已有客商修改增行!'
                   ELSE
                  '其他错误'
               END
          INTO v_exp
          from bd_cubasdoc
         where custname = :new.custname
            or (engname = :new.engname and length(:new.engname) > 3) --营业执照或身份照
            or (taxpayerid = :new.taxpayerid and length(:new.taxpayerid) > 3);--纳税人登记号
       if v_exp is not null then   
        raise_application_error(-20001, v_exp);
         end if;--相当于前面 else return?
       
         --正常客商通过exception,否则触发器提示“未找到任何数据”
       exception
      when no_data_found then  
        return;
       
    end;

    7

    CREATE OR REPLACE TRIGGER "XMV502"."ADDCUST"
      before insert on bd_cubasdoc
      for each row
    declare
      -- local variables here
      pk_bas char(20);
    
      corp char(4);
    
      /*查询目标公司目录*/
      cursor bdcorp is
        select pk_corp
          from ncv5.bd_corp /*目标数据库表*/
         where nvl(dr, 0) = 0
           and pk_corp <> '0001';
      /*查询目标公司是否存在基本档案*/
      cursor basjob(id char) is
        select pk_cubasdoc
          from ncv5.bd_cubasdoc
         where pk_cubasdoc = id
           and nvl(dr, 0) = 0;
    
    begin
    
      /*判断目标公司数据是否存在*/
      /* dbms_output.put_line('aaa');
      select pk_cubasdoc into pk_bas from bd_cubasdoc1*目标数据库表* where pk_cubasdoc=:new.pk_cubasdoc and nvl(dr,0)=0;*/
    
      open basjob(:new.pk_cubasdoc);
    
      loop
    
        fetch basjob
          into pk_bas;
    
        exit when basjob%notfound;
    
      end loop;
      close basjob;
      -- dbms_output.put_line('ddd');
      /*插入目标基本档案数据*/
      if pk_bas is null then
    
        begin
    
          /*--目标基本档案表/*目标数据库表*/
    
          insert into ncv5.bd_cubasdoc
            (pk_cubasdoc,
             pk_corp,
             custcode,
             custname,
             custshortname,
             engname,
             mnecode,
             trade,
             freecustflag,
             drpnodeflag,
             isconnflag,
             pk_cubasdoc1,
             custprop,
             pk_areacl,
             pk_corp1,
             taxpayerid,
             legalbody,
             creditmny,
             ecotypesincevfive,
             saleaddr,
             conaddr,
             zipcode,
             phone1,
             phone2,
             phone3,
             fax1,
             fax2,
             linkman1,
             linkman2,
             linkman3,
             bp1,
             bp2,
             bp3,
             mobilephone1,
             mobilephone2,
             mobilephone3,
             email,
             url,
             def1,
             def2,
             def3,
             def4,
             def5,
             def6,
             def7,
             def8,
             def9,
             def10,
             def11,
             def12,
             def13,
             def14,
             def15,
             def16,
             def17,
             def18,
             def19,
             def20,
             registerfund,
             sealflag,
             memo,
             pk_pricegroup,
             correspondunit,
             ts,
             dr)
          values
            (:new.pk_cubasdoc,
             :new.pk_corp,
             :new.custcode,
             :new.custname,
             :new.custshortname,
             :new.engname,
             :new.mnecode,
             :new.trade,
             :new.freecustflag,
             :new.drpnodeflag,
             :new.isconnflag,
             :new.pk_cubasdoc1,
             :new.custprop,
             :new.pk_areacl,
             :new.pk_corp1,
             :new.taxpayerid,
             :new.legalbody,
             :new.creditmny,
             :new.ecotypesincevfive,
             :new.saleaddr,
             :new.conaddr,
             :new.zipcode,
             :new.phone1,
             :new.phone2,
             :new.phone3,
             :new.fax1,
             :new.fax2,
             :new.linkman1,
             :new.linkman2,
             :new.linkman3,
             :new.bp1,
             :new.bp2,
             :new.bp3,
             :new.mobilephone1,
             :new.mobilephone2,
             :new.mobilephone3,
             :new.email,
             :new.url,
             :new.def1,
             :new.def2,
             :new.def3,
             :new.def4,
             :new.def5,
             :new.def6,
             :new.def7,
             :new.def8,
             :new.def9,
             :new.def10,
             :new.def11,
             :new.def12,
             :new.def13,
             :new.def14,
             :new.def15,
             :new.def16,
             :new.def17,
             :new.def18,
             :new.def19,
             :new.def20,
             :new.registerfund,
             :new.sealflag,
             :new.memo,
             :new.pk_pricegroup,
             :new.correspondunit,
             :new.ts,
             :new.dr);
          --dbms_output.put_line('ccc');
                /*插入目标管理档案数据*/
          open bdcorp;
          loop
          
            fetch bdcorp
              into corp;
            exit when bdcorp%notfound;
          
            --  dbms_output.put_line(:new.pk_cubasdoc);
            /*管理档案有两条数据,插入两次*/
            insert into ncv5.bd_cumandoc /*目标数据库表*/
              (pk_cumandoc,
               pk_corp,
               pk_cubasdoc,
               custflag,
               linkman,
               bp,
               mobilephone,
               pk_defbusitype,
               frozenflag,
               frozendate,
               discountrate,
               creditlevel,
               creditmny,
               creditlimitnum,
               accawmny,
               busawmny,
               ordawmny,
               pk_respdept1,
               pk_resppsn1,
               diffcurrflag,
               developdate,
               credlimitflag,
               pk_currtype1,
               pk_cusmandoc2,
               pk_cusmandoc3,
               pk_sendtype,
               pk_stordoc2,
               def1,
               def2,
               def3,
               def4,
               def5,
               def6,
               def7,
               def8,
               def9,
               def10,
               def11,
               def12,
               def13,
               def14,
               def15,
               def16,
               def17,
               def18,
               def19,
               def20,
               def21,
               def22,
               def23,
               def24,
               def25,
               def26,
               def27,
               def28,
               def29,
               def30,
               memo,
               pk_payterm,
               cooperateflag,
               creditmoney,
               testsalemoney,
               pk_salestru,
               pk_calbody,
               iounit,
               ratifydate,
               sealflag,
               custstate,
               pk_pricegroupcorp,
               freeofcremnycheck,
               freeofacclmtcheck,
               balancemny,
               acclimit,
               acclmtbegindate,
               cmnecode,
               grade,
               cooperatingdayfrom,
               cooperatingdayto,
               correspsettleunit,
               pk_settleunit,
               innerctldays,
               ispromtesettlement,
               stockpriceratio,
               ts,
               dr)
            values
              ('A100' ||corp|| substr(:new.pk_cubasdoc,9, 20),
               corp /*公司*/,
               :new.pk_cubasdoc,
               '2',
               null,
               null,
               null,
               null,
               'N',
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               'N',
               null,
               0,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               'N',
               null,
               null,
               null,
               null,
               'N',
               null,
               null,
               0,
               null,
               'N',
               'N',
               null,
               30,
               null,
               :new.mnecode,
               0,
               null,
               null,
               null,
               null,
               null,
               'Y',
               100,
               sysdate,
               0);
          
            insert into ncv5.bd_cumandoc /*目标数据库表*/
              (pk_cumandoc,
               pk_corp,
               pk_cubasdoc,
               custflag,
               linkman,
               bp,
               mobilephone,
               pk_defbusitype,
               frozenflag,
               frozendate,
               discountrate,
               creditlevel,
               creditmny,
               creditlimitnum,
               accawmny,
               busawmny,
               ordawmny,
               pk_respdept1,
               pk_resppsn1,
               diffcurrflag,
               developdate,
               credlimitflag,
               pk_currtype1,
               pk_cusmandoc2,
               pk_cusmandoc3,
               pk_sendtype,
               pk_stordoc2,
               def1,
               def2,
               def3,
               def4,
               def5,
               def6,
               def7,
               def8,
               def9,
               def10,
               def11,
               def12,
               def13,
               def14,
               def15,
               def16,
               def17,
               def18,
               def19,
               def20,
               def21,
               def22,
               def23,
               def24,
               def25,
               def26,
               def27,
               def28,
               def29,
               def30,
               memo,
               pk_payterm,
               cooperateflag,
               creditmoney,
               testsalemoney,
               pk_salestru,
               pk_calbody,
               iounit,
               ratifydate,
               sealflag,
               custstate,
               pk_pricegroupcorp,
               freeofcremnycheck,
               freeofacclmtcheck,
               balancemny,
               acclimit,
               acclmtbegindate,
               cmnecode,
               grade,
               cooperatingdayfrom,
               cooperatingdayto,
               correspsettleunit,
               pk_settleunit,
               innerctldays,
               ispromtesettlement,
               stockpriceratio,
               ts,
               dr)
            values
              ('A200' ||corp|| substr(:new.pk_cubasdoc,9,20),
               corp /*公司*/,
               :new.pk_cubasdoc,
               '3',
               null,
               null,
               null,
               null,
               'N',
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               'N',
               null,
               0,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               null,
               'N',
               null,
               null,
               null,
               null,
               'N',
               null,
               null,
               0,
               null,
               'N',
               'N',
               null,
               30,
               null,
               :new.mnecode,
               0,
               null,
               null,
               null,
               null,
               null,
               'Y',
               100,
               sysdate,
               0);
          end loop;
          close bdcorp;
        end;
      end if;
    
    end addcust;

    8

    CREATE OR REPLACE TRIGGER "XMV502"."C_ACCBANK_NET"
      before UPDATE on   BD_ACCBANK
      for each row
    declare
      -- local variables here
      pk_bas bd_accbank.pk_accbank%type;
         
     cursor basjob(id varchar2) is 
     select pk_accbank from ncv5.bd_cubasdoc,ncv5.arap_djfb,ncv5.bd_cumandoc,ncv5.bd_accbank
            where ncv5.arap_djfb.ksbm_cl = ncv5.bd_cumandoc.pk_cumandoc
             and ncv5.bd_cumandoc.pk_cubasdoc = ncv5.bd_cubasdoc.pk_cubasdoc
             and ncv5.bd_accbank.pk_accbank = ncv5.arap_djfb.skyhzh
             and ncv5.arap_djfb.payflag in ('1', '2')
             and pk_accbank=id; 
     
    begin
     open basjob(:new.pk_accbank);
     loop
       fetch basjob into pk_bas;
       exit when basjob%notfound;
       end loop;
       close basjob;
     if pk_bas is not null then
      /* if :new.bankacc<>:old.bankacc or
         :new.unitname<>:old.unitname*/
        if utl_match.edit_distance_similarity(:old.bankacc,:new.bankacc)<'90' or
           utl_match.edit_distance_similarity(:old.unitname,:new.unitname)<'70'
         then
       raise_application_error(-20001,'注意:账户已成功付款,不能修改账号或单位名称!');
       end if;
       end if;
    end;

    9

    CREATE OR REPLACE TRIGGER "XMV502"."C_ACCBANK_SPACE"
    before insert or update on bd_accbank  
      for each row
    declare
      -- local variables here
      
    begin 
     if regexp_like(:new.bankacc,'[[:space:]]') or
        regexp_like(:new.combineaccnum,'[[:space:]]') or
        regexp_like(:new.unitname,'[[:space:]]')     
         or
        (length(:new.combineaccnum) not in ('5','12'))
         then
        raise_application_error(-20001,'注意:银行账号、联行号或单位名称中有空格或联行号:' ||:new.combineaccnum ||'长度不正确!');    
      
     end if;    
    end ;

    10

    CREATE OR REPLACE TRIGGER "XMV502"."S_DELETE_CUSTBANK"
    
      before delete on bd_custbank
    
      for each row
    
    declare
    
      -- local variables here
    
      pk_bas char(20);
    
      cursor basjob(id char) is
      
        select pk_custbank
        
          from ncv5.bd_custbank /*目标数据库表*/
        
         where pk_custbank = id
              
           and nvl(dr, 0) = 0
           and pk_custbank not in
               (select bd_custbank.pk_custbank
                  from ncv5.arap_djfb, ncv5.bd_accbank, ncv5.bd_custbank
                 where bd_accbank.pk_accbank = arap_djfb.skyhzh
                   and bd_accbank.pk_accbank = bd_custbank.pk_accbank);
    
    begin
    
      /*判断数据是否在目标数据库存在*/
    
      open basjob(:old.pk_custbank);
    
      loop
      
        fetch basjob
        
          into pk_bas;
        /*dbms_output.put_line('pa_bas:'||pk_bas);*/
        exit when basjob%notfound;
      
      end loop;
    
      close basjob;
    
      /******************************/
    
      if pk_bas is not null then
      
        begin
        
          delete ncv5.bd_custbank /*目标数据库表*/
          
           where pk_custbank = :old.pk_custbank;
        
        end;
      else
        raise_application_error(-20001,
                                :old.account || '已从网银付款,不能修改或删行,请取消!');
      
      end if;
    end S_DELETE_CUSTBANK;

    11

    CREATE OR REPLACE TRIGGER "XMV502"."S_INSERT_CUSTBANK"
      before insert on bd_custbank
      for each row
    declare
      pk_bas char(20);
     vname varchar2(80);
      cursor basjob(id char) is
        select pk_custbank
          from ncv5.bd_custbank /*目标数据库表*/
         where pk_custbank = id
           and nvl(dr, 0) = 0;
    begin
      /*判断数据是否在目标数据库存在*/
      open basjob(:new.pk_custbank);
    
      loop
    
        fetch basjob
          into pk_bas;
    
        exit when basjob%notfound;
    
      end loop;
      close basjob;
      /******************************/
    
      if pk_bas is null then
    
        begin
       select custname
        into vname
        from bd_cubasdoc
       where pk_cubasdoc = :new.pk_cubasdoc; /*and custprop=0; --只同步更新外部客商的“单位名称 ”*/
    
      update bd_accbank
         set combineaccnum = :new.memo,
             unitname      = vname,
             city          = :new.accaddr,
             bankarea      = :new.accaddr
       where pk_accbank = :new.pk_accbank;
    
          insert into ncv5.bd_custbank /*目标数据库表*/
            (pk_custbank,
             pk_cubasdoc,
             accname,
             account,
             accaddr,
             defflag,
             memo,
             pk_accbank,
             pk_corp,
             pk_currtype,
             ts,
             dr)
          values
            (:new.pk_custbank,
             :new.pk_cubasdoc,
             :new.accname,
             :new.account,
             :new.accaddr,
             :new.defflag,
             :new.memo,
             :new.pk_accbank,
             :new.pk_corp,
             :new.pk_currtype,
             :new.ts,
             :new.dr);
        end;
    
      end if;
    
    end S_INSERT_CUSTBANK;

    12

    CREATE OR REPLACE TRIGGER "XMV502"."UPDATEBANK"
      before update on bd_accbank
      for each row
    declare
      -- local variables here
      pk_bas char(20);
    
      cursor basjob(id char) is
        select pk_accbank
          from ncv5.bd_accbank /*目标数据库表*/
         where pk_accbank = id
           and nvl(dr, 0) = 0;
    begin
      /*判断数据是否在目标数据库存在*/
      open basjob(:new.pk_accbank);
    
      loop
    
        fetch basjob
          into pk_bas;
    
        exit when basjob%notfound;
    
      end loop;
      close basjob;
      /******************************/
    
      if pk_bas is not null then
        begin
          update ncv5.bd_accbank /*目标数据库*/
             set pk_corp       = :new.pk_corp,
                 bankacc       = :new.bankacc,
                 bankname      = :new.bankname,
                 accopendate   = :new.accopendate,
                 address       = :new.address,
                 tel           = :new.tel,
                 contactpsn    = :new.contactpsn,
                 sealflag      = :new.sealflag,
                 memo          = :new.memo,
                 netbankflag   = :new.netbankflag,
                 banktype      = :new.banktype,
                 areacode      = :new.areacode,
                 unitname      = :new.unitname,
                 bankowner     = :new.bankowner,
                 pk_settlecent = :new.pk_settlecent,
                 pk_settleunit = :new.pk_settleunit,
                 genebranprop  = :new.genebranprop,
                 ctlprop       = :new.ctlprop,
                 arapprop      = :new.arapprop,
                 pk_accid      = :new.pk_accid,
                 combineaccnum = :new.combineaccnum,
                 orgnumber     = :new.orgnumber,
                 branchname    = :new.branchname,
                 bankarea      = :new.bankarea,
                 province      = :new.province,
                 city          = :new.city,
                 remcode       = :new.remcode,
                 iscontrolled  = :new.iscontrolled,
                 beginmny      = :new.beginmny,
                 beginmnydate  = :new.beginmnydate,
                 abcarea       = :new.abcarea,
                 pk_createunit = :new.pk_createunit,
                 groupid       = :new.groupid,
                 netqueryflag  = :new.netqueryflag,
                 pk_currtype   = :new.pk_currtype,
                 isautoreturn  = :new.isautoreturn,
                 pk_accbank    = :new.pk_accbank,
                 def2          = :new.def2,
                 def3          = :new.def3,
                 def4          = :new.def4,
                 def5          = :new.def5,
                 def1          = :new.def1,
                 custcode      = :new.custcode,
                 groupaccount  = :new.groupaccount,
                 signflag      = :new.signflag,
                 ts            = :new.ts,
                 dr            = :new.dr
           where pk_accbank = :new.pk_accbank;
        end;
    
      end if;
    end updateBank;

    13

    CREATE OR REPLACE TRIGGER "XMV502"."UPDATEBD_CUSTBANK"
      before update on bd_custbank
      for each row
    declare
      -- local variables here
    
      pk_bas char(20);
    
      cursor basjob(id char) is
        select pk_custbank
          from ncv5.bd_custbank /*目标数据库表*/
         where pk_custbank = id
           and nvl(dr, 0) = 0;
    begin
      /*判断数据是否在目标数据库存在*/
      open basjob(:new.pk_custbank);
    
      loop
    
        fetch basjob
          into pk_bas;
    
        exit when basjob%notfound;
    
      end loop;
      close basjob;
      /******************************/
    
      if pk_bas is not null then
    
        begin
          update ncv5.bd_custbank /*目标数据库表*/
             set pk_custbank = :new.pk_custbank,
                 pk_cubasdoc = :new.pk_cubasdoc,
                 accname     = :new.accname,
                 account     = :new.account,
                 accaddr     = :new.accaddr,
                 defflag     = :new.defflag,
                 memo        = :new.memo,
                 pk_accbank  = :new.pk_accbank,
                 pk_corp     = :new.pk_corp,
                 pk_currtype = :new.pk_currtype,
                 ts          = :new.ts,
                 dr          = :new.dr
           where pk_custbank = :new.pk_custbank;
        end;
    
      end if;
    end updatebd_custbank;

    14

    CREATE OR REPLACE TRIGGER "XMV502"."UPDATEBD_EARECL"
      before update on bd_areacl
      for each row
    declare
      -- local variables here
      pk_bas char(20);
    
      cursor basjob(id char) is
        select pk_areacl
          from ncv5.bd_areacl /*目标数据库表*/
         where pk_areacl = id
           and nvl(dr, 0) = 0;
    begin
      /*判断数据是否在目标数据库存在*/
      open basjob(:new.pk_areacl);
    
      loop
    
        fetch basjob
          into pk_bas;
    
        exit when basjob%notfound;
    
      end loop;
      close basjob;
      /******************************/
    
      if pk_bas is not null then
        begin
          update ncv5.bd_areacl /*目标数据库*/
             set areaclcode     = :new.areaclcode,
                 areaclname     = :new.areaclname,
                 def1           = :new.def1,
                 def2           = :new.def2,
                 def3           = :new.def3,
                 def4           = :new.def4,
                 def5           = :new.def5,
                 dr             = :new.dr,
                 mnecode        = :new.mnecode,
                 pk_areacl      = :new.pk_areacl,
                 pk_corp        = :new.pk_corp,
                 pk_fatherarea  = :new.pk_fatherarea,
                 ts             = :new.ts
           where pk_areacl = :new.pk_areacl;
        end;
    
      end if;
    end updatebde_arecl;

    15

    CREATE OR REPLACE TRIGGER "XMV502"."UPDCUST"
      before update on bd_cubasdoc
      for each row
    declare
      -- local variables here
    
      pk_bas char(20);
    
      /*查询目标公司是否存在基本档案*/
      cursor basjob(id char) is
        select pk_cubasdoc
          from ncv5.bd_cubasdoc /*目标数据库表*/
         where pk_cubasdoc = id
           and nvl(dr, 0) = 0;
    
    begin
      /*判断目标公司数据是否存在*/
    
      /*判断目标公司数据是否存在*/
      /* dbms_output.put_line('aaa');
      select pk_cubasdoc into pk_bas from bd_cubasdoc1*目标数据库表* where pk_cubasdoc=:new.pk_cubasdoc and nvl(dr,0)=0;*/
      --   dbms_output.put_line('aaa');
      open basjob(:new.pk_cubasdoc);
    
      loop
      
        fetch basjob
          into pk_bas;
      
        exit when basjob%notfound;
      
      end loop;
      close basjob;
      dbms_output.put_line(:new.pk_cubasdoc);
      if pk_bas is not null then
        begin
          update ncv5.bd_cubasdoc /*目标数据库表*/
             set pk_cubasdoc       = :new.pk_cubasdoc,
                 pk_corp           = :new.pk_corp,
                 custcode          = :new.custcode,
                 custname          = :new.custname,
                 custshortname     = :new.custshortname,
                 engname           = :new.engname,
                 mnecode           = :new.mnecode,
                 trade             = :new.trade,
                 freecustflag      = :new.freecustflag,
                 drpnodeflag       = :new.drpnodeflag,
                 isconnflag        = :new.isconnflag,
                 pk_cubasdoc1      = :new.pk_cubasdoc1,
                 custprop          = :new.custprop,
                 pk_areacl         = :new.pk_areacl,
                 pk_corp1          = :new.pk_corp1,
                 taxpayerid        = :new.taxpayerid,
                 legalbody         = :new.legalbody,
                 creditmny         = :new.creditmny,
                 ecotypesincevfive = :new.ecotypesincevfive,
                 saleaddr          = :new.saleaddr,
                 conaddr           = :new.conaddr,
                 zipcode           = :new.zipcode,
                 phone1            = :new.phone1,
                 phone2            = :new.phone2,
                 phone3            = :new.phone3,
                 fax1              = :new.fax1,
                 fax2              = :new.fax2,
                 linkman1          = :new.linkman1,
                 linkman2          = :new.linkman2,
                 linkman3          = :new.linkman3,
                 bp1               = :new.bp1,
                 bp2               = :new.bp2,
                 bp3               = :new.bp3,
                 mobilephone1      = :new.mobilephone1,
                 mobilephone2      = :new.mobilephone2,
                 mobilephone3      = :new.mobilephone3,
                 email             = :new.email,
                 url               = :new.url,
                 def1              = :new.def1,
                 def2              = :new.def2,
                 def3              = :new.def3,
                 def4              = :new.def4,
                 def5              = :new.def5,
                 def6              = :new.def6,
                 def7              = :new.def7,
                 def8              = :new.def8,
                 def9              = :new.def9,
                 def10             = :new.def10,
                 def11             = :new.def11,
                 def12             = :new.def12,
                 def13             = :new.def13,
                 def14             = :new.def14,
                 def15             = :new.def15,
                 def16             = :new.def16,
                 def17             = :new.def17,
                 def18             = :new.def18,
                 def19             = :new.def19,
                 def20             = :new.def20,
                 registerfund      = :new.registerfund,
                 sealflag          = :new.sealflag,
                 memo              = :new.memo,
                 pk_pricegroup     = :new.pk_pricegroup,
                 correspondunit    = :new.correspondunit,
                 ts                = :new.ts,
                 dr                = :new.dr
           where pk_cubasdoc = :new.pk_cubasdoc;
          update ncv5.bd_cumandoc
             set cmnecode = :new.mnecode
           where pk_cubasdoc = :new.pk_cubasdoc;
        end;
      
      end if;
    end updCust;

    16

    CREATE OR REPLACE TRIGGER "XMV502"."UPDCUSTALL"
      before update on bd_cubasdoc
      for each row
    
    declare
      netpk number(1);
    begin
      --将从网银付款客商写入变量netname
      select count(distinct pk_cubasdoc) 
        into netpk
        from ncv5.arap_djfb, ncv5.bd_cumandoc
       where arap_djfb.ksbm_cl = bd_cumandoc.pk_cumandoc
         and bd_cumandoc.pk_cubasdoc = :new.pk_cubasdoc
         and arap_djfb.payflag in ('1', '2');
    
      --找到已从网银付款客商   
      if netpk >'0' then
        if utl_match.edit_distance_similarity(:old.custname, :new.custname) < '70' then
          raise_application_error(-20001, '已成功付款,不可任意修改');
        end if;
        --没有从网银付款客商
      else
        if utl_match.edit_distance_similarity(:old.custname, :new.custname) < '50' then
          raise_application_error(-20001, '不可任意修改,请新增客商');
        end if;
      
      end if;
    end;
  • 相关阅读:
    topk 问题 --转载
    MySQL是否使用外键
    MySQL的事务隔离---总结和转载
    MySQL设计规范--转自腾讯云社区
    docker图解--转载
    单点登录soo-转载
    在linux上配置后端所需的内容
    推荐一个计算机漫画地址
    python与mysql数据库连接中常见错误
    python_excel_读写(转载)
  • 原文地址:https://www.cnblogs.com/sumsen/p/4699793.html
Copyright © 2011-2022 走看看