现在主要问题就是insert into 插入数据commit后没成功插入到表中,而且没有报错日志。实在找不出问题所在,单独insert into确可以。。。。麻烦看看
create or replace procedure P_COUNTRY_ORDER_DETAIL(pc_number varchar2,
loop_date date) is
CURSOR cu_p_id IS
select p.id
from tb_drug_order_detail p
where trunc(p.create_date, 'hh24') = trunc(loop_date, 'hh24');
v_id varchar2(255);
v_beginDate date;
num number;
error_num number;
begin
v_beginDate := sysdate;
num := 0;
error_num := 0;
open cu_p_id;
LOOP
fetch cu_p_id
into v_id;
EXIT WHEN cu_p_id%NOTFOUND;
begin
insert into gdyc_country.purchaseinfo
select seq_purchaseinfo.NextVal,
pc_number,
t.ORDER_DETAIL_NO,
i.id,
mi.institute_name,
t.drugs_id,
d.medi_name,
'',
d.DOSAGE_FORM,
'', --
d.CONVERT_PER,
d.Packaging_Unit,
d.Packaging_Material,
d.APPROVAL_NUMBER,
d.MANUFACTURER_ID,
d.MANUFACTURER,
t.DISPATCH_ID,
l.institute_name,
t.order_number,
(t.MATCH_PRICE / t.ORDER_NUMBER),
t.RESPONSE_TIME,
'1',
sysdate,
'',
'0',
d.DURG_SPEC
from TB_DRUG_ORDER_DETAIL t
left join tb_drug_order_info i
on get_strarraystrofindex(t.order_detail_no, '_', '0') =
i.order_num
left join tb_drug_medical_institution mi
on i.medical_id = mi.id
left join tb_drug_information d
on t.drugs_id = d.id
left join tb_drug_logistics_institution l
on t.dispatch_id = l.id
where t.id = v_id;
num := num + 1;
exception
when others then
begin
rollback;
put_line('[c-5]',
'P_COUNTRY_ORDER_DETAIL',
SQLCODE || ':' || SQLERRM,
'1',
v_id,
loop_date);
error_num := error_num + 1;
end;
end;
END LOOP;
p_change_log('[c-5]',
'P_COUNTRY_ORDER_DETAIL:' || trunc(loop_date, 'hh24'),
v_beginDate,
num,
error_num);
commit;
end P_COUNTRY_ORDER_DETAIL;
xi
------解决思路----------------------
这样的别人很难找
主要从两方面来检查
1是游标的查询是否有结果
2是是否出现异常,检查异常处理部分
在代码中跟踪调试一下
------解决思路----------------------
num变量是系统关键字
------解决思路----------------------
加一段exception处理,获取一下sqlerrm,看看错误信息是什么,调调就明白了。