在存储过程结合游标的使用过程中报出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;
如有描述不清楚的地方,还请回帖,必定回复!!