sequence.nextval
Oracle で MAXVALUE に達したときにスローされる特定の例外をキャッチしたいですか?
EXCEPTION WHEN OTHERS を使用したくありません。ロガーの特定の例外をキャッチしたい。
ユーザー定義の例外を宣言し、例外コード-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>