存储过程结合游标的使用错误--------ORA-01403

来源:互联网 发布:亨通大数据产业园 编辑:程序博客网 时间:2024/05/16 05:04

在存储过程结合游标的使用过程中报出ORA-01403未找到数据错误!

贴出一个小  demo,不用看表名和数据

create or replace procedure PROC_ADDETCDATA AS  crstrnum        varchar2(20);     CURSOR etc_data IS    select t.cardnbr from cardetcinfo t where nvl(t.custr,0)=0;      begin   for etcdata_data in etc_data LOOP       BEGIN      select  t1.CUSTR into crstrnum  --错误行       from carddetails t1 where t1.cardnbr= etcdata_data.cardnbr; dbms_output.put_line(crstrnum);   update cardetcinfo t2 set t2.custr=crstrnum;   end;   end loop;    commit; end  PROC_ADDETCDATA;

一看到这个 “未找到数据错误”

1.首先会去想游标是不是为空的 ,验证之后排除游标原因

2.一步一步调试代码,发现错误行,之后拿游标的值为条件去测试错误行的sql,会发现错误行的sql拼上游标内的条件后查询结果为空,找到原因所在

为避免这个原因可以加上异常捕获处理,并可以作为异常日志写入库中

 EXCEPTION
    WHEN OTHERS THEN
   V_ERROR := SQLCODE;--可在创建游标时声明参数
    DBMS_OUTPUT.PUT_LINE(V_ERROR);
                       --本行可写插入语句
    COMMIT;
    ROLLBACK;


如有描述不清楚的地方,还请回帖,必定回复!!