select
每当我的游标循环中的任何语句没有获取数据时,我都需要继续我的循环。我想处理相同的异常。该过程在发现数据连续时插入数据,但一旦o.id
被游标选择不保存相关数据,它就存在循环并且仅插入先前获取的记录的数据并且不继续循环。
CREATE OR REPLACE procedure order_violation1(
p_type number,
p_code varchar2,
p_submit_from date,
p_submit_to date,
p_approved_from date,
p_approved_to date,
p_flag number,
p_status varchar2
) is
pp_type varchar2(100);
pp_company varchar2(50);
pp_code varchar2(20);
pp_ord_num varchar2(50);
pp_status varchar2(50);
SUBMIT_DATE date;
APPROVAL_DATE date;
ORDERING_RATIO_FLAG number;
pp_submit_date date;
pp_app_date date;
pp_package varchar2(3000);
pp_flag NUMBER;
cursor pp_id is
select distinct o.id
from orders o,
partnerprofile pp
where type_id=p_type
and o.ordering_ratio_flag=p_flag
and pp.id=o.to_partner_id
and decode(P_CODE,null,'1',pp.code) = decode(P_CODE,null,'1',p_code)
and decode(p_submit_from,null, to_date('01/01/01','dd/mm/yy'),
to_date(submit_date,'dd/mm/yy')) between
decode(p_submit_from ,null,
to_date('01/01/01','dd/mm/yy'),p_submit_from) and
decode(p_submit_to,null,to_date('01/01/01','dd/mm/yy'),'05-JUL-14')
and decode(p_approved_from,null,
to_date('01/01/01','dd/mm/yy'),
to_date(submit_date,'dd/mm/yy')) between
decode(p_approved_from,null,
to_date('01/01/01','dd/mm/yy'),p_approved_from) and
decode(p_approved_to,null,to_date('01/01/01','dd/mm/yy'),'05-JUL-14')
and decode(p_status,null,'1',o.status) = decode(p_status,null,'1',p_status);
begin
FOR r_partner IN pp_id
loop
select name
into pp_type
from partnertype
where id=p_type;
select code,
company_name
into pp_code,
pp_company
from partnerprofile pp,
orders o
where o.id=r_partner.id
and pp.id=o.to_partner_id;
select ORDER_NUMBER,
STATUS,
SUBMIT_DATE,
APPROVAL_DATE,
ORDERING_RATIO_FLAG
into pp_ord_num,
pp_status,
pp_submit_date,
pp_app_date,
pp_flag
from orders
where id=r_partner.id;
select distinct
rtrim (xmlagg (
xmlelement (e, pk.name||'='||
nvl(oln.total_amount,0) || '||')
).extract ('//text()'), ',')
into pp_package
from package pk,
orderlineitem oln
where oln.package_id=pk.id
and oln.order_id=r_partner.id
GROUP BY oln.order_id;
insert into order_violation_tab1
values (pp_type, pp_code, pp_company, pp_ord_num,
pp_status, pp_submit_date, pp_app_date,
pp_flag, null, null);
--pp_package);
END;