用友提供的客商新增trigger|待研究|

create or replace trigger 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,
           null,
           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;
原文地址:https://www.cnblogs.com/sumsen/p/2525731.html