1

sequence.nextvalOracle で MAXVALUE に達したときにスローされる特定の例外をキャッチしたいですか?

EXCEPTION WHEN OTHERS を使用したくありません。ロガーの特定の例外をキャッチしたい。

4

1 に答える 1

4

ユーザー定義の例外を宣言し、例外コード-8004(シーケンスが最大値を超えたときに発生する例外のコード) を関連付けて、pragma exception_init()その特定の例外をキャッチできます。次に例を示します。

SQL> declare
  2    l_ex_max_val exception;
  3    pragma exception_init(l_ex_max_val, -8004);
  4    l_val number;
  5  begin
  6    l_val := gen_val.nextval;     -- This kind of assignment is allowed 
  7  exception                       -- in 11g and further versions. In earlier versions
  8    when l_ex_max_val             -- you would use select statement
  9    then dbms_output.put_line('ERROR! sequence gen_val exceeds its max value');
 10  end;
 11  /

ERROR! sequence gen_val exceeds its max value

PL/SQL procedure successfully completed

SQL> 
于 2013-08-08T07:05:17.663 に答える