我的存储过程中有一句
select dwbm into s_dwbm from dwbm where dwbm = s_bm;的语句,但我发现,如果这条记录取出的值有数据,则以后的存储过程语句能正常执行,如果这句话取不到数据,则存储过程就不向下执行了。请问这是不是oracle的一个bug,还是我写的存储过程有问题,如果有问题该如何解决。
select dwbm into s_dwbm from dwbm where dwbm = s_bm;的语句,但我发现,如果这条记录取出的值有数据,则以后的存储过程语句能正常执行,如果这句话取不到数据,则存储过程就不向下执行了。请问这是不是oracle的一个bug,还是我写的存储过程有问题,如果有问题该如何解决。
如果你想继续执行,对单行子查询可以用:select max(dwbm) into s_dwbm from dwbm where dwbm = s_bm;
begin
select dwbm into s_dwbm from dwbm where dwbm = s_bm;
exception when no_data_found then
......
end;
2.
select count(*) into vcount from dwbm where dwbm = s_bm;
if vcount>0 then
......
......
else
......
end if;
我说的方法主要是处理不同的结果,但能保证数据继续执行,如果需要异常处理,则如下修改:
if s_dwbm = '' then
......
Raise_Application_Error(-20000,'数据未找到');
else
......
end if;