PL / SQL没有数据发现游标异常

时间:2013-06-23 14:54:34

标签: oracle loops exception-handling plsql cursor

我正在编写一个打开2个游标的过程,需要为每个游标做一些逻辑,但如果no_data_found则不执行任何操作。 如果我没有处理它,fetch会插入空值,如果我抛出异常,它会忽略第二部分。

代码:

create or replace procedure pro_name(param1,param2....)
as
    var1
    var2
    TYPE cur_typ IS REF CURSOR;
    c cur_typ;
    etc...
begin
sql_str := 'select from ' || param1 || 'where some_cond..';

open c for sql_str;
loop

fetch c into v1, v2 , v3; 
DO STUFF...

end loop;
commit;


-- go all over again with different table

sql_str2 := 'select from ' || param2 || 'where some_cond..';

open c2 for sql_str2;
loop

fetch c into v1a, v2a , v3a; 
DO STUFF...

end loop;
commit;

end;

我应该在哪里进行错误处理?

1 个答案:

答案 0 :(得分:3)

当fetch没有找到任何行时你需要退出循环(参见Working with Cursors):

FETCH c INTO v1, v2, v3; 
EXIT WHEN c%NOTFOUND;