2011-06-20 8 views
1

SELECTNO_DATA_FOUNDを生成したことをどのように確認できますか?NO_DATA_FOUND例外

例:

CREATE [..] 
DECLARE 
-- 
BEGIN 
    SELECT [...]; -- will this 
    SELECT [...]; -- or this to generate NO_DATA_FOUND ? 
EXEPCTION 
WHEN NO_DATA_FOUND THEN 
    [...] 
END; 

答えて

4

あなたはこれを行うことができます:

DECLARE 
-- 
BEGIN 
    BEGIN 
    SELECT [...]; -- will this 
    EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
     [...] 
    END; 
    BEGIN 
    SELECT [...]; -- or this to generate NO_DATA_FOUND ? 
    EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
     [...] 
    END; 
END; 

または:

DECLARE 
    l_where_am_i number; 
BEGIN 
    l_where_am_i := 1; 
    SELECT [...]; -- will this 
    l_where_am_i := 2; 
    SELECT [...]; -- or this to generate NO_DATA_FOUND ? 
EXEPCTION 
    WHEN NO_DATA_FOUND THEN 
    CASE l_where_am_i 
     WHEN 1 THEN [...] 
     WHEN 2 THEN [...] 
    END CASE; 
END; 
+0

すごい、これは – dynamic

+0

なものがはるかに難しくなりますが –

+0

を参照してください? – dynamic

2

別のオプションは、以下に示すように、それはに良いだろうけれども(dbms_utility.format_error_backtraceを使用することですがそのデータをエラーロギングルーチンに送信します)。この関数は、エラーが発生した実際の行番号を返します。

CREATE [..] 
DECLARE 
-- 
BEGIN 
    SELECT [...]; -- will this 
    SELECT [...]; -- or this to generate NO_DATA_FOUND ? 
EXEPCTION 
WHEN NO_DATA_FOUND THEN 
    [...] 
    dbms_output.put_line(dbms_utility.format_error_backtrace()); 
END; 
+0

私はそのユーティリティについて知りませんでした。(単にdmbs_outputのput_lineを見逃してしまいました)。 – Harrison

関連する問題