더북(TheBook)

CASE문

CASE문은 3장에서 배웠던 CASE 표현식과 비슷하다. SELECT 절에서 CASE 표현식을 사용했듯이 PL/SQL 프로그램 내에서도 CASE문을 사용할 수 있는데, 그 구문은 다음과 같다.

    <유형 1>
    CASE 표현식
        WHEN 결과1 THEN
             처리문1;
        WHEN 결과2 THEN
             처리문2;
        ...
        ELSE
             기타 처리문;
    END CASE;
     
    <유형 2>
    CASE WHEN 표현식1 THEN
             처리문1;
        WHEN 표현식2 THEN
             처리문2;
        ...
        ELSE
             기타 처리문;
    END CASE;

두 가지 유형으로 CASE문을 사용할 수 있는데, 첫 번째는 CASE 다음에 바로 표현식을 두고 이 표현식 결과 값에 따라 WHEN… THEN에서 처리하는 유형이다. 두 번째 유형은 표현식 자체를 각각의 WHEN 다음에 두고 THEN 이하에서 처리하는데 보통 후자를 많이 사용한다. 그 이유는 WHEN 이하에서 다양한 표현식을 사용해 조건을 검색할 수 있기 때문이다.

급여에 따라 ‘높음’, ‘낮음’을 출력하는 IF문을 CASE문으로 변환해 보자.

입력

    DECLARE
      vn_salary NUMBER := 0;
      vn_department_id NUMBER := 0;
    BEGIN
      vn_department_id := ROUND(DBMS_RANDOM.VALUE (10, 120), -1);

       SELECT salary
         INTO vn_salary
         FROM employees
        WHERE department_id = vn_department_id
          AND ROWNUM = 1;

    DBMS_OUTPUT.PUT_LINE(vn_salary);

    CASE WHEN vn_salary BETWEEN 1 AND 3000 THEN
              DBMS_OUTPUT.PUT_LINE('낮음');
         WHEN vn_salary BETWEEN 3001 AND 6000 THEN
              DBMS_OUTPUT.PUT_LINE('중간');
         WHEN vn_salary BETWEEN 6001 AND 10000 THEN
              DBMS_OUTPUT.PUT_LINE('높음');
         ELSE
              DBMS_OUTPUT.PUT_LINE('최상위');
      END CASE;

    END;

결과

    12008
    최상위

IF…ELSE로 이어진 구문을 CASE문으로 변경했는데, 이렇게 여러 가지 조건을 처리하는 경우에는 CASE문을 사용했을 때가 좀더 깔끔해 보인다. 그렇다고 무조건 여러 조건을 처리할 때 CASE문을 사용하라는 얘기는 아니며, 작성하는 코드 성격에 따라 어떤 문장을 사용할 것인지 판단하면 된다. CASE문 역시 IF문처럼 중첩으로 사용할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.