📍 IF ~ THEN ~ END IF (단일 IF문)
▪ EMP_ID를 입력받아 해당 사원의 사번, 이름, 급여, 보너스율 출력
단, 보너스를 받지 않는 사원은
보너스율 출력 전 '보너스를 지급받지 않는 사원입니다.' 출력
DECLARE
EMP EMPLOYEE%ROWTYPE;
BEGIN
SELECT * INTO EMP FROM EMPLOYEE
WHERE EMP_ID = '&EMP_ID';
DBMS_OUTPUT.PUT_LINE('사번 : ' || EMP.EMP_ID );
DBMS_OUTPUT.PUT_LINE('이름 : ' || EMP.EMP_NAME );
DBMS_OUTPUT.PUT_LINE('급여 : ' || EMP.SALARY );
DBMS_OUTPUT.PUT_LINE('보너스율 : ' || EMP.BONUS );
-- NULL은 빈칸으로 출력됨
IF (EMP.BONUS IS NULL)
THEN DBMS_OUTPUT.PUT_LINE('보너스를 지급받지 않는 사원입니다.');
END IF;
END;
/
📍 IF ~ THEN ~ ELSE ~ END IF (IF ~ ESLE문)
▪ EMP_ID를 입력받아 해당 사원의 사번, 이름, 부서명, 소속 출력
TEAM 변수를 만들어 소속이 'KO'인 사원은 '국내팀'
아닌 사원은 '해외팀'으로 저장
DECLARE
ID EMPLOYEE.EMP_ID%TYPE;
NAME EMPLOYEE.EMP_NAME%TYPE;
TITLE DEPARTMENT.DEPT_TITLE%TYPE;
CODE LOCATION.NATIONAL_CODE%TYPE;
TEAM VARCHAR2(20);
BEGIN
SELECT EMP_ID, EMP_NAME, DEPT_TITLE, NATIONAL_CODE
INTO ID, NAME, TITLE, CODE FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN LOCATION ON(LOCATION_ID = LOCAL_CODE)
WHERE EMP_ID = '&EMP_ID';
IF (CODE = 'KO')
THEN TEAM := '국내팀';
ELSE TEAM := '해외팀';
END IF;
DBMS_OUTPUT.PUT_LINE(ID);
DBMS_OUTPUT.PUT_LINE(NAME);
DBMS_OUTPUT.PUT_LINE(TITLE);
DBMS_OUTPUT.PUT_LINE(CODE);
DBMS_OUTPUT.PUT_LINE(TEAM);
END;
/
📍 IF ~ THEN ~ ELSIF ~ ELSE ~ END IF (IF ~ ESLE IF ~ ELSE문)
▪ 점수를 입력받아 SCORE변수에 저장하고
90점 이상은 'A', 80점 이상은 'B', 70점 이상은 'C'
60점 이상은 'D' 60점 미만은 'F'로 조건 처리하여 GRADE 변수에 저장하여
'당신의 점수는 90점이고, 학점은 A 학점입니다' 형태로 출력
DECLARE
SCORE NUMBER;
GRADE CHAR(1);
BEGIN
SCORE := '&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;
DBMS_OUTPUT.PUT_LINE('당신의 점수는 ' || SCORE || '점이고,
학점은 ' || GRADE || '입니다.');
END;
/
📍 CASE ~ WHEN ~ THEN ~ END (SWITCH ~ CASE 문)
▪ 사원 번호를 입력하여 해당 사원의 사번, 이름, 부서명 출력
DECLARE
EMP EMPLOYEE%ROWTYPE;
DNAME VARCHAR2(20);
BEGIN
SELECT * INTO EMP FROM EMPLOYEE
WHERE EMP_ID = '&EMP_ID';
DNAME := 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_ID);
DBMS_OUTPUT.PUT_LINE(EMP.EMP_NAME);
DBMS_OUTPUT.PUT_LINE(DNAME);
END;
/