대덕인재/Oracle

[Oracle D-18] 분기문

꼬마버거 2025. 4. 24. 11:56

"분기문"조건에 따라 다른 일을 하게 만드는 제어문이야.

 

✅ Oracle에서 사용하는 분기문 종류


 

분기문 설명
IF ~ THEN 조건이 참일 때만 실행
IF ~ THEN ~ ELSE 조건이 참/거짓일 때 각각 실행
IF ~ ELSIF ~ ELSE 여러 조건 중 하나 선택
CASE WHEN ~ THEN 값에 따라 실행 분기 (if문보다 깔끔함)

🧪 1. IF ~ THEN

IF 점수 >= 90 THEN
    DBMS_OUTPUT.PUT_LINE('A학점');
END IF;
  • 조건이 참일 때만 실행됨
  • END IF; 꼭 붙여줘야 해!

🧪 2. IF ~ THEN ~ ELSE

IF 점수 >= 60 THEN
    DBMS_OUTPUT.PUT_LINE('합격');
ELSE
    DBMS_OUTPUT.PUT_LINE('불합격');
END IF;

조건이 참이면 앞쪽, 거짓이면 ELSE 쪽 실행


🧪 3. IF ~ ELSIF ~ ELSE (다단계 조건 분기)

IF 점수 >= 90 THEN
    DBMS_OUTPUT.PUT_LINE('A학점');
ELSIF 점수 >= 80 THEN
    DBMS_OUTPUT.PUT_LINE('B학점');
ELSIF 점수 >= 70 THEN
    DBMS_OUTPUT.PUT_LINE('C학점');
ELSE
    DBMS_OUTPUT.PUT_LINE('F학점');
END IF;

여러 조건 중 가장 먼저 참이 되는 것만 실행돼.

 


🧪 4. CASE 문 (if문보다 깔끔함)

📌 형식 1: 값 기준

CASE 변수명
    WHEN 'A' THEN ~
    WHEN 'B' THEN ~
    ELSE ~
END;

📌 형식 2: 조건 기준 (CASE WHEN)

CASE
    WHEN 점수 >= 90 THEN 'A학점'
    WHEN 점수 >= 80 THEN 'B학점'
    ELSE 'F학점'
END

CASE는 SELECT문 안에서도 쓸 수 있어서 조회 결과를 가공할 때 자주 사용해!


💬 SELECT 안에서 CASE 사용 예

SELECT 이름,
       점수,
       CASE 
           WHEN 점수 >= 90 THEN 'A'
           WHEN 점수 >= 80 THEN 'B'
           ELSE 'F'
       END AS 등급
FROM 성적;

🧠 언제 뭐 써야 할까?

 

상황 추천 분기문
단순 조건 (참/거짓) IF ~ THEN ~ ELSE
여러 개의 조건이 있음 IF ~ ELSIF 또는 CASE
SELECT문 안에서 조건 분기 CASE

✅ 예제: 전체 구조 (PL/SQL 블록에서)

DECLARE
    v_score NUMBER := 85;
BEGIN
    IF v_score >= 90 THEN
        DBMS_OUTPUT.PUT_LINE('A');
    ELSIF v_score >= 80 THEN
        DBMS_OUTPUT.PUT_LINE('B');
    ELSE
        DBMS_OUTPUT.PUT_LINE('F');
    END IF;
END;

'대덕인재 > Oracle' 카테고리의 다른 글

[Oracle D-18] 반복문  (0) 2025.04.24
[Oracle D-18] 변수  (0) 2025.04.24
[Oracle D-17] LOOP  (0) 2025.04.23
[Oracle D-17] PL/SQL에서 사용되는 프로그래밍 구조(Program Units)  (0) 2025.04.23
[Oracle D-16] SYNONYM 객체  (0) 2025.04.22