[ORACLE] PL/SQL 조건선택문(If, Case conditional selection statements : Control Statements) [오라클]

If, Case conditional selection statements

오라클 PL/SQL에서 조건선택문에 대해 알아보도록 합시다! 조건 선택으로 사용하는 문법은 크게 두 개가 있으며 각각 if 문, 그리고 case 문입니다. 두 가지 조건문을 사용하는 방법에 대해 설명해드릴 텐데요, 우선 if 의 사용 방법부터 안내해 드리도록 하겠습니다.

오라클 IF 문

IF 의 사용과 관련하여 핵심적으로 알아야 할 내용은 다음의 3가지입니다. 각각에 대해 살펴보겠습니다.

  • IF THEN
  • IF THEN ELSE
  • IF THEN ELSIF

IF THEN

IF THEN 구문은 가장 기본적인 조건선택문입니다. 주어진 조건이 참일 때, 실행할 블록을 정의합니다. 다음은 x가 5보다 클 때 메시지를 출력하도록 하는 예제 자료입니다.

DECLARE
   x NUMBER := 10;
BEGIN
   IF x > 5 THEN
      DBMS_OUTPUT.PUT_LINE('x는 5보다 큽니다.');
   END IF;
END;
/
x는 5보다 큽니다.

PL/SQL procedure successfully completed.

IF THEN ELSE

IF THEN ELSE 구문은 조건이 참일 때와 아닐 때에 대한 두 가지 블록을 정의할 수 있습니다. 다음 예제는 5보다 큰 경우, 그리고 그외의 경우인 5보다 작거나 같은 경우를 정의해 보았습니다.

DECLARE
   x NUMBER := 3;
BEGIN
   IF x > 5 THEN
      DBMS_OUTPUT.PUT_LINE('x는 5보다 큽니다.');
   ELSE
      DBMS_OUTPUT.PUT_LINE('x는 5보다 작거나 같습니다.');
   END IF;
END;
/
x는 5보다 작거나 같습니다.

PL/SQL procedure successfully completed.

IF THEN ELSIF

IF THEN ELSIF 구문은 여러 조건을 검사하고, 참에 해당하는 첫 번째 조건의 블록을 실행합니다. 여러 조건이 참이 될 수 있으므로, 실행하려는 블록의 우선순위를 잘 결정하여 위에서부터 차례대로 내려가 주세요.

DECLARE
   x NUMBER := 15;
BEGIN
   IF x > 10 THEN
      DBMS_OUTPUT.PUT_LINE('x는 10보다 큽니다.');
   ELSIF x > 5 THEN
      DBMS_OUTPUT.PUT_LINE('x는 5보다 큽니다.');
   ELSE
      DBMS_OUTPUT.PUT_LINE('x는 5보다 작거나 같습니다.');
   END IF;
END;
/
x는 10보다 큽니다.

PL/SQL procedure successfully completed.

사용법은 아래의 예시에서 안내해드리겠습니다.

SET SERVEROUTPUT ON

DECLARE
   BOOL   BOOLEAN := TRUE;
   NUM    NUMBER := 10;
BEGIN
   --IF THEN
   IF BOOL
   THEN
      --BOOL = TRUE 와 BOOL 은 동일합니다. ( = TRUE 는 생략할 수 있습니다. )
      DBMS_OUTPUT.PUT_LINE ('BOOL');
   END IF;

   --IF THEN ELSE
   IF BOOL = FALSE
   THEN
      DBMS_OUTPUT.PUT_LINE ('BOOL = FALSE');
   ELSE
      DBMS_OUTPUT.PUT_LINE ('BOOL = TRUE');
   END IF;

   --IF THEN ELSIF
   IF NUM >= 9
   THEN
      --[NUM] 이 10 이기에 이 분기를 진행하며 6이상, 3이상 부분을 수행하지 않습니다. IF 순서를 신경 쓰세요.
      DBMS_OUTPUT.PUT_LINE ('NUM >= 9');
   ELSIF NUM >= 6
   THEN
      DBMS_OUTPUT.PUT_LINE ('NUM >= 6');
   ELSIF NUM >= 3
   THEN
      DBMS_OUTPUT.PUT_LINE ('NUM >= 3');
   ELSE
      DBMS_OUTPUT.PUT_LINE ('ELSE');
   END IF;
END;
/
오라클 case 사용하기

오라클 CASE 문

CASE 문 또한 조건을 분기하여 실행할 블록을 제공하는 역할을 합니다. 케이스 문은 크게 2가지로 분류할 수 있습니다.

  • 단순 CASE (SIMPLE CASE) 
  • 검색 CASE (SEARCHED CASE)

WHEN 부분에 모든 조건을 기술하느냐, 선택을 하느냐의 차이입니다. 케이스문에 대한 설명을 추가 문서를 작성하여 보완하도록 하겠습니다. 😊

SET SERVEROUTPUT ON

DECLARE
   BOOL   BOOLEAN := TRUE;
   NUM    NUMBER := 10;
BEGIN
   --SIMPLE CASE STATEMENT
   CASE NUM
      WHEN 1
      THEN
         DBMS_OUTPUT.PUT_LINE ('NUM is 1');
      WHEN 5
      THEN
         DBMS_OUTPUT.PUT_LINE ('NUM is 5');
      ELSE
         DBMS_OUTPUT.PUT_LINE ('ELSE');
   END CASE;

   --SEARCH CASE STATEMENT
   CASE
      WHEN NUM = 100
      THEN
         DBMS_OUTPUT.PUT_LINE ('NUM = 100');
      WHEN BOOL
      THEN
         DBMS_OUTPUT.PUT_LINE ('BOOL is true');
   --ELSE 생략 가능합니다.
   END CASE;
END;
/

댓글