create or replace procedure insertspzl as
is_tb number(2):=1;-- 1 已经同步 2 未同步 3 修改状态
spbh VARCHAR2(255);
sccj VARCHAR2(255);
sccjpd VARCHAR2(255); --判断生产厂家是否存在 变量
jxname VARCHAR2(255);
jxnamepd VARCHAR2(255);
spfl VARCHAR2(255);
jyfw VARCHAR2(255);
cursor cur is select trim(商品编号) spbh,trim(生产厂商) sccj,trim(剂型) jx,trim(商品类型) spfl,trim(商品类型) jyfw from 商品资料@TEST;
begin
-- 增加资料处理字段
-- alter table zl_spzlb add (bzdw VARCHAR2(255));
-- alter table zl_spzlb add (sccj VARCHAR2(255));
-- alter table zl_spzlb add (jx VARCHAR2(255));
-- alter table zl_spzlb add (spfl VARCHAR2(255));
-- For 循环逐条插入记录
for temp in cur loop
spbh :=temp.spbh;
sccj :=temp.sccj;
jxname :=temp.jx;
spfl :=temp.spfl;
jyfw :=temp.jyfw;
select trim(是否同步) into is_tb from 商品资料@TEST where trim(商品编号)=spbh ;
Dbms_Output.put_line('--打印is_tb--'||is_tb||'--编号--'||spbh);
-- If 判断单条条件处理
if is_tb =1 then
Dbms_Output.put_line('--发现未同步商品--'||spbh);
Dbms_Output.put_line('--厂家--'||sccj);
Dbms_Output.put_line('开始插入数据');
--插入商品资料
insert into zl_spzlb
(resid,bh,spbh,name,sptym,slv,pzwh,spcd,cctj,is_zdyh,is_ty,bzdw,spgg,sccj,jx,spfl)
select seq_acl_res_resid.nextval,trim(商品编号),trim(商品编号),trim(商品名称),trim(通用名),
trim(税率),trim(批准文号),trim(产地),
decode(trim(储存条件),'密封,置阴凉处','阴凉、暗凉(密闭,遮光)','密封','阴凉、暗凉(密闭,遮光)',
'密封,置阴凉处(不超过20°)','阴凉、暗凉(密闭,遮光)','遮光','阴凉、暗凉(密闭,遮光)','阴凉',
'阴凉、暗凉(密闭,遮光)','常温','常温(干燥0℃-30℃)','冷藏','冷藏(2℃-10℃)','其他'),
decode(trim(养护措施),'普通养护',2,'重点养护',1),decode(trim(是否停用),'否',2,'是',1),trim(单位),
trim(规格),trim(生产厂商),trim(剂型), trim(商品类型)
from 商品资料@TEST
where trim(商品编号)=spbh;
--插入包装资料
Dbms_Output.put_line('--商品--'||spbh);
insert into zl_bzggzlb(bzid,spid,jlgg,is_hd,name)
select seq_zl_bzggzlb_bzid.nextval,a.resid,1,1,a.bzdw from zl_spzlb a where a.spbh=spbh;
--更新
update zl_spzlb a set (a.lsbzid,a.pfbzid)=(Select b.bzid,b.bzid From zl_bzggzlb b Where a.resid=b.spid and a.spbh=spbh) where a.spbh =spbh;
end loop;
commit;
--for 循坏结束
end insertspzl;
游标循环不允许再 遍历游标的时候
有insert的操作,并且执行了commit
但是如果commit 放在循化外面 会在获取
商品资料@TEST
第二行记录插入时候
--插入包装资料
在这一块把第一次生产的数据带出来重复插入
导致
--更新
这一块没办法进行 返回多行
如何去隔离上一次循环 不影响下一次并且最后提交都提交
求大大们指教