데이터베이스

[ORACLE] PL/SQL 제어문 - 조건문(IF-ELSIF-ELSE, CASE-WHEN-THEN)

Seong-Jun 2025. 3. 17. 23:12
728x90
반응형
SMALL

PL/SQL의 조건문

동작 방식은 흔히 알고 있는 IF문과 동일하다. 단지 문법만 조금 다를 뿐이다.

단일 IF 문

IF 조건식 THEN 실행내용 END IF;

 

IF / ELSE 문

IF 조건식 THEN 실행내용 
    ELSE 실행내용;
    END IF;

 

IF-ELSIF-ELSE 문

IF 조건식 THEN 실행내용
    ELSIF 조건식 THEN 실행내용
    ELSE 실행내용;
    END IF;

 

예시

DECLARE
	EID EMPLOYEE.EMP_ID%TYPE;
	ENAME EMPLOYEE.EMP_NAME%TYPE;
	SAL EMPLOYEE.SALARY%TYPE;
	BONUS EMPLOYEE.BONUS%TYPE;
BEGIN
	SELECT EMP_ID, EMP_NAME, SALARY, NVL(BONUS, 0)
	INTO EID, ENAME, SAL, BONUS
	FROM EMPLOYEE
	WHERE EMP_ID = &사원번호;
	
	IF BONUS = 0 THEN DBMS_OUTPUT.PUT_LINE('보너스를 받지 않는 사원입니다.');
	ELSE DBMS_OUTPUT.PUT_LINE('보너스 : ' || BONUS);
	END IF;
END;
/

 

DECLARE
	SCORE NUMBER;
	GRADE CHAR(1);
BEGIN
	SCORE := &점수;
	
	IF SCORE >= 90 THEN GRADE := 'A';
	ELSIF SCORE >= 80 THEN GRADE := 'B';
	ELSIF SCORE >= 70 THEN GRADE := 'C';
	ELSIF SCORE >= 60 THEN GRADE := 'D';
	ELSE GRADE := 'F';
	END IF;	
	
	IF GRADE = 'F' THEN DBMS_OUTPUT.PUT_LINE('재평가 대상입니다.');
	ELSE DBMS_OUTPUT.PUT_LINE('점수는 ' || SCORE || '이고, 등급은 ' || GRADE || '입니다.');
	END IF;
END;
/

 

75 입력 후..

CASE - WHEN - THEN 문

CASE 비교대상 
    WHEN 비교값1 THEN 결과값1
    WHEN 비교값2 THEN 결과값2
    ...
    ELSE 결과값N
END;

 

흔히 알고 있는 SWITCH 문과 비슷하다.

DECLARE
	EMP EMPLOYEE%ROWTYPE;
	DTITLE VARCHAR2(20);
BEGIN
	SELECT *
	INTO EMP
	FROM EMPLOYEE
	WHERE EMP_ID = '&사번';

	DTITLE := CASE EMP.DEPT_CODE
		WHEN 'D1' THEN  '인삭관리부'
		WHEN 'D2' THEN '회계관리부'
		WHEN 'D3' THEN '마케팅부'
		WHEN 'D4' THEN  '국내영업부'
		WHEN 'D5' THEN '해외영업1부'
		WHEN 'D6' THEN '해외영업2부'
		WHEN 'D7' THEN '해외영업3부'
		WHEN 'D8' THEN '기술지원부'
		WHEN 'D9' THEN '총무부'
	END;
	
	DBMS_OUTPUT.PUT_LINE(EMP.EMP_NAME || ' 사원의 소속부서는 ' || DTITLE || '입니다.');
END;
/
728x90
반응형
LIST