경진의 블로그

PL/SQL - Exception 예외처리 본문

자바개발과정/오라클(Oracle)

PL/SQL - Exception 예외처리

aith 2008. 6. 3. 13:20
Exception 예외처리

Exception은 에러가 발생했을 경우에 에러 처리하는 것을 말한다.
이런처리 없이 그대로 프로그램을 만들면 에러 발생시 프로그램이 작동을 멈춥니다.
더 이상 진행하거나 다른 작업이 안 되는 것이다.
따라서  이런 Exception을 통해서 에러 발생 시 해당 에러에 대해서 별도 처리가 가능하다.
결국은 에러가 발생해도 이를 무시하고 수행하게 할 수도 잇고, 아니면 좀 더 다르게 진행할 수도 있기 때문에 아주 유용함과 동시에 프로그램 시에는 필수적 요소라 할 수 있다.

DECLARE
  [변수선언]
BEGIN
  [프로그램 코딩부분]
EXCEPTION
   WHEN Exception명 THEN
      [에러 처리 프로그램]
   WHEN OTHERS THEN
      [에러 처리 프로그램]
END;

 Exception 명  Oracle Error
 NO_DATA_FOUND  ORA-01403
 PROGRAM_ERROR  ORA-06501
 ROWTYPE_MISMATCH  ORA-06504
 STORAGE_ERROR  ORA-06500
 INVALID_NUMBER  ORA-01722
 TOO_MANY_ROWS  ORA-01422
 VALUE_ERROR  ORA-06502
 ZERO_DIVIDE  ORA-01476
 TIMEOUT_ON_RESOURCE  ORA-00051

숫자형 변수에 문자값을 넣은 에러 예외 처리

declare
n_i number(10) := 0;
begin
    n_i := '홍길동';
exception
    when invalid_number then
        dbms_output.put_line('이번 에러는 잘못된 숫자값에 대한 에러입니다.');
    when value_error then
        dbms_output.put_line('이번 에러는 잘못된 데이터값에 대한 에러입니다.');
    when others then
        dbms_output.put_line('이번 에러는 잘못된 숫자나 데이터값에은 아닙니다.');
end;
/

0으로 나눈값에 대한 에러 예외 처리

declare
n_i number(10,3) := 0;
begin
    n_i := 120/0;
exception
    when zero_divide then
        dbms_output.put_line('이번 에러는 0으로 나누기 한 것입니다.');
    when others then
        dbms_output.put_line('이번 에러는 0으로 나누기 한건 아닙니다.');
end;
/

사용자 예외처리

declare
    user_excep exception;
begin
    raise user_excep;
exception
    when user_excep then
        dbms_output.put_line('이번에는 Rasie를 이용한 사용자 예외처리 입니다');
    when others then
        dbms_output.put_line('그 외 처리');
end;
/

Oracle 에러 코드를 이용한 예외 처리

declare
    err_num number;
    err_msg varchar2(100);
    n_i number(10,3) := 0;
begin
    n_i := 120/0;
exception
    when others then
        err_num := SQLCODE;
 err_msg := SUBSTR(SQLERRM,1,100);
 dbms_output.put_line('에러코드:'||err_num);
        dbms_output.put_line('에러코드:'||err_msg);
end;
/
0 Comments
댓글쓰기 폼