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;