Oracele 存储过程 游标循环?

刘痕 2009-03-21 09:34:15
begin
select t.subscrbid into vc_subscrbid from ucis.tab_subscrb t
where t.svcnum = lr1.mdn;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('用户标示查找错误');
end;


是这一句的问题了,知道了,他是每次游标走到第一个位置然后就不走下一个了,直接没有值就报错。

谁能告诉我怎么才能循环不报错,找对那个数据呢?
...全文
122 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mosaic 2009-03-21
  • 打赏
  • 举报
回复
lr1是什么东东? 游标?
范佩西_11 2009-03-21
  • 打赏
  • 举报
回复
贴完整的。
刘痕 2009-03-21
  • 打赏
  • 举报
回复
create or replace procedure mid_pro
is
vc_subscrbid varchar(40);
vc_Crm_productid varchar(20);
-- vc_test varchar(20);
-- cu varchar(20);
cursor s1 is
select MDN,OrderID,SP_ProductID,PushId,EffectiveDate,ExpireDate from p_Orderinfo_Syn;
lr1 s1%rowtype;



BEGIN
--open s1;
FOR lr1 IN s1 LOOP

BEGIN
select t.subscrbid into vc_subscrbid from ucis.tab_subscrb t
where t.svcnum = lr1.mdn;
dbms_output.put_line(vc_subscrbid);
-- vc_test := vc_subscrbid;
EXCEPTION
WHEN NO_DATA_FOUND THEN
rollback;
dbms_output.put_line('error'||vc_subscrbid);
END;

BEGIN

select t1.serviceid into vc_Crm_productid from ucis.tab_crmproductservice t1
where t1.spec_productid = lr1.sp_productid;
-- vc_test := vc_Crm_productid;
EXCEPTION
WHEN NO_DATA_FOUND THEN
rollback;
dbms_output.put_line('error'||vc_Crm_productid);
END;

insert into ucis.tab_subsprelation(subscrbid,Crm_productid,Prm_productid,serviceid,Developid,Effdate,Expdate)
values(vc_subscrbid,
lr1.orderid,
lr1.sp_productid,
vc_Crm_productid,
lr1.pushid,
to_date(lr1.effectivedate,'yyyy-mm-dd hh24:mi:ss'),
to_date(lr1.expiredate,'yyyy-mm-dd hh24:mi:ss'));

update p_orderinfo_syn set
TOPROCESS = '1'
where OrderID = lr1.orderid;
COMMIT;

END LOOP;
exception
when others then
dbms_output.put_line('error');
rollback;
close s1;
end mid_pro;

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧