PL/SQL - 2

DONI·2022년 2월 24일
0

Oracle

목록 보기
16/22
post-thumbnail

🚩 소스코드 - 조건문

  📍 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;
/
profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글