2013-08-08 4 views
1

오라클에서 sequence.nextval이 MAXVALUE에 도달하면 throw 된 특정 예외를 catch하고 싶습니까?예외 sequence.nextval maxvalue? (oracle sql)

예외적 인 경우를 사용하고 싶지 않습니다. 내 로거에 대한 특정 예외를 잡아 내고 싶습니다.

답변

3

사용자 정의 예외를 선언하고 을 사용하여 예외 코드 -8004 (시퀀스가 최대 값을 초과 할 때 발생하는 예외 코드)을 연결 한 다음 해당 예외를 catch 할 수 있습니다. 다음은 그 예입니다 :

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> 
+0

고맙습니다 - 이것은 plsql에서도 작동합니까? – user2663377

+0

@ user2663377 위의 예는 PL/SQL (익명 PL/SQL 블록)입니다. –