0

2 つのカーソルを開くプロシージャを作成しており、それぞれに対して何らかのロジックを実行する必要がありますが、no_data_found. 私がそれを処理していない場合、フェッチは null 値を挿入し、例外をスローすると、2 番目の部分を無視します。

コード:

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;

エラー処理はどこに配置すればよいですか?

4

1 に答える 1

3

フェッチによって行が見つからない場合は、ループを終了する必要があります (「カーソルの操作」を参照)。

FETCH c INTO v1, v2, v3; 
EXIT WHEN c%NOTFOUND;
于 2013-06-23T15:11:57.903 に答える