SUMSEN

Oracle&Sql爱好者,用友NC管理员

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
create or replace trigger 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;

  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 addbd_custbank;
posted on 2012-06-19 20:44  sumsen  阅读(470)  评论(0编辑  收藏  举报