declare
m_storeloc varchar2(30);
q_invbasdoc varchar2(30); k_invbasdoc varchar2(30);
q_invcode varchar2(30); k_invcode varchar2(30);i number;
begin
select pk_calbody into m_storeloc from bd_calbody where bd_calbody.pk_calbody = :new.pk_calbody;
select count(*) into i from bd_produce where pk_invbasdoc = :new.pk_invbasdoc;
if i = 1 then
if m_storeloc = '01' then
select invcode into k_invcode from v_bd_inv_ven_k where pk_invbasdoc=:new.pk_invbasdoc;
insert into inf_nc_trans(transnum,storeloc,optype,cmdnum,enterdate)
values(k_invcode,'L0017','insert','item',sysdate);
else if m_storeloc = '02' then
select invcode into q_invcode from v_bd_inv_ven where pk_invbasdoc=:new.pk_invbasdoc;
insert into inf_nc_trans(transnum,storeloc,optype,cmdnum,enterdate)
values(q_invcode,'L1001','insert','item',sysdate);
end if;
else if i > 1 then //在这就要报错,写成这样elsif i...也报错
if m_calbody = '01' then
select pk_invbasdoc,invcode into k_invbasdoc,k_invcode from v_bd_inv_ven_k v where v.pk_invbasdoc = :new.pk_invbasdoc;
if k_invbasdoc = null then
insert into inf_nc_trans(transnum,storeloc,optype,cmdnum,enterdate)
values(k_invcode,'L0017','insert','item',sysdate);
end if;
else if m_calbody = '02' then
select pk_invbasdoc,invcode into q_invbasdoc,q_invcode from v_bd_inv_ven v where v.pk_invbasdoc = :new.pk_invbasdoc;
if q_invbasdoc = null then
insert into inf_nc_trans(transnum,storeloc,optype,cmdnum,enterdate)
values(q_invcode,'L1001','insert','item',sysdate);
end if;
end if;
end if ;
end; ///这里也有错哦,不知道咋了
m_storeloc varchar2(30);
q_invbasdoc varchar2(30); k_invbasdoc varchar2(30);
q_invcode varchar2(30); k_invcode varchar2(30);i number;
begin
select pk_calbody into m_storeloc from bd_calbody where bd_calbody.pk_calbody = :new.pk_calbody;
select count(*) into i from bd_produce where pk_invbasdoc = :new.pk_invbasdoc;
if i = 1 then
if m_storeloc = '01' then
select invcode into k_invcode from v_bd_inv_ven_k where pk_invbasdoc=:new.pk_invbasdoc;
insert into inf_nc_trans(transnum,storeloc,optype,cmdnum,enterdate)
values(k_invcode,'L0017','insert','item',sysdate);
else if m_storeloc = '02' then
select invcode into q_invcode from v_bd_inv_ven where pk_invbasdoc=:new.pk_invbasdoc;
insert into inf_nc_trans(transnum,storeloc,optype,cmdnum,enterdate)
values(q_invcode,'L1001','insert','item',sysdate);
end if;
else if i > 1 then //在这就要报错,写成这样elsif i...也报错
if m_calbody = '01' then
select pk_invbasdoc,invcode into k_invbasdoc,k_invcode from v_bd_inv_ven_k v where v.pk_invbasdoc = :new.pk_invbasdoc;
if k_invbasdoc = null then
insert into inf_nc_trans(transnum,storeloc,optype,cmdnum,enterdate)
values(k_invcode,'L0017','insert','item',sysdate);
end if;
else if m_calbody = '02' then
select pk_invbasdoc,invcode into q_invbasdoc,q_invcode from v_bd_inv_ven v where v.pk_invbasdoc = :new.pk_invbasdoc;
if q_invbasdoc = null then
insert into inf_nc_trans(transnum,storeloc,optype,cmdnum,enterdate)
values(q_invcode,'L1001','insert','item',sysdate);
end if;
end if;
end if ;
end; ///这里也有错哦,不知道咋了
user_errors,里面的信息会帮你忙的
count 肯定是 >= 0 的吧。条件不用那么多巴
else if m_storeloc = '02' then
====>
elsif m_storeloc = '02' then
就行了
====〉
elsif m_calbody = '02' then