본문 바로가기
Be Smart/SQL

[오라클] Oracle PL/SQL 조건 제어문과 반복 제어문 완벽 가이드

by 반월하 2024. 6. 20.
728x90

PL/SQL 조건 제어문과 반복 제어문 완벽 가이드

 

PL/SQL에서는 특정 조건에 따라 실행할 내용을 달리하는 조건 제어문과 반복적으로 특정 작업을 수행하는 반복 제어문을 제공합니다. 이번 포스팅에서는 IF 문, CASE 문, 그리고 다양한 반복문을 활용하는 방법에 대해 자세히 알아보겠습니다.

1. 조건 제어문

IF 조건문

IF 조건문은 특정 조건을 만족하면 지정된 작업을 수행합니다. 기본 형식은 아래와 같습니다:

IF 조건식 THEN
    수행할 명령어;
END IF;

예제: 변수에 입력된 값이 홀수인지 알아보기 (입력 값이 홀수일 때)

DECLARE
   V_NUMBER NUMBER := 13;
BEGIN
   IF MOD(V_NUMBER, 2) = 1 THEN
      DBMS_OUTPUT.PUT_LINE('V_NUMBER는 홀수입니다!');
   END IF;
END;
/

예제: 변수에 입력된 값이 홀수인지 알아보기 (입력 값이 짝수일 때)

DECLARE
   V_NUMBER NUMBER := 14;
BEGIN
   IF MOD(V_NUMBER, 2) = 1 THEN
      DBMS_OUTPUT.PUT_LINE('V_NUMBER는 홀수입니다!');
   END IF;
END;
/
IF-THEN-ELSE 조건문

IF-THEN-ELSE 조건문은 특정 조건을 만족하는 경우와 그렇지 않은 경우 각각의 작업을 수행합니다.

IF 조건식 THEN
    수행할 명령어;
ELSE
    수행할 명령어;
END IF;

예제: 변수에 입력된 값이 홀수인지 짝수인지 알아보기 (입력 값이 짝수일 때)

DECLARE
   V_NUMBER NUMBER := 14;
BEGIN
   IF MOD(V_NUMBER, 2) = 1 THEN
      DBMS_OUTPUT.PUT_LINE('V_NUMBER는 홀수입니다!');
   ELSE
      DBMS_OUTPUT.PUT_LINE('V_NUMBER는 짝수입니다!');
   END IF;
END;
/
IF-THEN-ELSIF 조건문

여러 조건에 따라 각각의 작업을 수행할 수 있습니다.

IF 조건식 THEN
    수행할 명령어;
ELSIF 조건식 THEN
    수행할 명령어;
...
ELSE
    수행할 명령어;
END IF;

예제: 입력한 점수가 어느 학점인지 출력하기

DECLARE
   V_SCORE NUMBER := 87;
BEGIN
   IF V_SCORE >= 90 THEN
      DBMS_OUTPUT.PUT_LINE('A학점');
   ELSIF V_SCORE >= 80 THEN
      DBMS_OUTPUT.PUT_LINE('B학점');
   ELSIF V_SCORE >= 70 THEN
      DBMS_OUTPUT.PUT_LINE('C학점');
   ELSIF V_SCORE >= 60 THEN
      DBMS_OUTPUT.PUT_LINE('D학점');
   ELSE
      DBMS_OUTPUT.PUT_LINE('F학점');
   END IF;
END;
/
CASE 조건문

CASE 조건문은 조건식의 결과 값에 따라 여러 가지 수행 작업을 지정할 수 있습니다.

단순 CASE문

CASE 비교 기준
    WHEN 값1 THEN
        수행할 명령어;
    WHEN 값2 THEN
        수행할 명령어;
    ...
    ELSE
        수행할 명령어;
END CASE;

예제: 입력 점수에 따른 학점 출력하기

DECLARE
   V_SCORE NUMBER := 87;
BEGIN
   CASE TRUNC(V_SCORE/10)
      WHEN 10 THEN DBMS_OUTPUT.PUT_LINE('A학점');
      WHEN 9 THEN DBMS_OUTPUT.PUT_LINE('A학점');
      WHEN 8 THEN DBMS_OUTPUT.PUT_LINE('B학점');
      WHEN 7 THEN DBMS_OUTPUT.PUT_LINE('C학점');
      WHEN 6 THEN DBMS_OUTPUT.PUT_LINE('D학점');
      ELSE DBMS_OUTPUT.PUT_LINE('F학점');
   END CASE;
END;
/

검색 CASE문

CASE
    WHEN 조건식1 THEN
        수행할 명령어;
    WHEN 조건식2 THEN
        수행할 명령어;
    ...
    ELSE
        수행할 명령어;
END CASE;

예제: 입력 점수에 따른 학점 출력하기

DECLARE
   V_SCORE NUMBER := 87;
BEGIN
   CASE
      WHEN V_SCORE >= 90 THEN DBMS_OUTPUT.PUT_LINE('A학점');
      WHEN V_SCORE >= 80 THEN DBMS_OUTPUT.PUT_LINE('B학점');
      WHEN V_SCORE >= 70 THEN DBMS_OUTPUT.PUT_LINE('C학점');
      WHEN V_SCORE >= 60 THEN DBMS_OUTPUT.PUT_LINE('D학점');
      ELSE DBMS_OUTPUT.PUT_LINE('F학점');
   END CASE;
END;
/

2. 반복 제어문

PL/SQL에서는 다음 네 가지 반복문을 제공합니다: 기본 LOOP, WHILE LOOP, FOR LOOP, Cursor FOR LOOP.

기본 LOOP

기본 반복문은 아래와 같은 형식으로 작성합니다:

LOOP
    반복 수행작업;
END LOOP;

예제: 기본 LOOP 사용하기

DECLARE
   V_NUM NUMBER := 0;
BEGIN
   LOOP
      DBMS_OUTPUT.PUT_LINE('현재 V_NUM : ' || V_NUM);
      V_NUM := V_NUM + 1;
      EXIT WHEN V_NUM > 4;
   END LOOP;
END;
/
WHILE LOOP

WHILE LOOP문은 조건식의 결과가 true일 때 반복을 수행합니다.

WHILE 조건식 LOOP
    반복 수행 작업;
END LOOP;

예제: WHILE LOOP 사용하기

DECLARE
   V_NUM NUMBER := 0;
BEGIN
   WHILE V_NUM < 4 LOOP
      DBMS_OUTPUT.PUT_LINE('현재 V_NUM : ' || V_NUM);
      V_NUM := V_NUM + 1;
   END LOOP;
END;
/
FOR LOOP

FOR LOOP문은 반복 횟수를 지정할 수 있습니다.

FOR i IN 시작 값 .. 종료 값 LOOP
    반복 수행 작업;
END LOOP;

예제: FOR LOOP 사용하기

BEGIN
   FOR i IN 0..4 LOOP
      DBMS_OUTPUT.PUT_LINE('현재 i의 값 : ' || i);
   END LOOP;
END;
/

REVERSE 키워드 사용하기

FOR i IN REVERSE 시작 값 .. 종료 값 LOOP
    반복 수행 작업;
END LOOP;

예제: FOR LOOP 사용하기 (역순)

BEGIN
   FOR i IN REVERSE 0..4 LOOP
      DBMS_OUTPUT.PUT_LINE('현재 i의 값 : ' || i);
   END LOOP;
END;
/
CONTINUE문, CONTINUE-WHEN문

FOR LOOP 안에 CONTINUE문을 사용할 수 있습니다.

BEGIN
   FOR i IN 0..4 LOOP
      CONTINUE WHEN MOD(i, 2) = 1;
      DBMS_OUTPUT.PUT_LINE('현재 i의 값 : ' || i);
   END LOOP;
END;
/

이번 포스팅에서는 PL/SQL에서 조건 제어문과 반복 제어문을 사용하는 다양한 방법에 대해 알아보았습니다. 각 문법을 활용하여 더욱 효율적인 PL/SQL 코드를 작성해보세요!

728x90

댓글