0
declare
  v number;
begin

  select 1 
    into v 
    from dual 
   where 1=2;

exception
  when others then 
    dbms_output.put_line('A');
  when no_data_found   then
    dbms_output.put_line('B');
end;

これを実行するとエラーが発生しますが、例外 WHEN OTHERS でどこかで読んだことがあります。最初に配置すると、他のタイプの例外を常に抑制して実行されます。私はインタビューでこの質問をされました.私は上記のように. 誰か確認してくれませんか

4

3 に答える 3

0

最後に OTHERS 例外を残すだけです。例: BEGIN 何か EXCEPTION THEN WHEN DUP_VAL_ON_INDEX が何かをする WHEN OTHERS THEN 最後の例外が何かをする END;

于 2015-08-28T14:46:32.913 に答える
0

このコード ブロックを実行すると、例外が発生します(ここにPLS-00370文書化されています)。

PLS-00370: OTHERSハンドラは、ブロックの例外ハンドラの最後にある必要があります

原因: 1 つ以上の例外ハンドラが OTHERS ハンドラの後に表示されています。ただし、OTHERS ハンドラは、具体的に名前が付けられていないすべての例外のハンドラとして機能するため、ブロックまたはサブプログラムの最後のハンドラである必要があります。

処置:すべての特定の例外ハンドラに従うように、OTHERSハンドラを移動してください。

于 2013-10-31T16:00:48.310 に答える