본문 바로가기

Database/PLSQL

027 - [Oracle PL/SQL] Exceptions - common mistakes

샘플코드에서 사용한 데이터는 HR 스키마이고, 오라클 설치시 생성할 수 있는 기본 스키마 입니다.

 

Exceptions 사용시 흔한 실수

 

1. for 같은 반복문과 예외처리 할 경우, 예외처리후에 반복문을 계속 처리해야 한다면 아래 코드같은 구조를 조심해야 한다.

 

# 반복할 for 문이 있음에도 불구하고 예외처리 후 구문이 종료되는 잘못된 경우의 예시 코드.

declare
    v_first_name employees.first_name%type;

begin
    for i in 99..102
    loop
        select first_name into v_first_name
        from
        employees
        where employee_id=i;
        dbms_output.put_line(i||' ' ||v_first_name);
    end loop;
     
    exception
        when no_data_found then
        dbms_output.put_line('The query doesn''t retrieve any record');
end;
------------------------------------------------------------------------------
The query doesn't retrieve any record



# 예외사항이 발생해도 모든 for 문을 처리하려면 예외처리 코드를 for문 내부에서 처리해야 한다.

declare
    v_first_name employees.first_name%type;

begin
    for i in 99..102
    loop
        begin
            select first_name into v_first_name
            from
            employees
            where employee_id=i;
            dbms_output.put_line(i||' ' ||v_first_name);
            
            exception
                when no_data_found then
                dbms_output.put_line('The query doesn''t retrieve any record');
        end;
    end loop;
  
end;
------------------------------------------------------------------------------
The query doesn't retrieve any record
100 Steven
101 Neena
102 Lex