본문 바로가기
DB

[SQL] PL/SQL – 조건문(IF, ELSE, ELSIF, CASE)

by chan10 2021. 3. 25.

조건문 (IF, ELSE, ELSIF, CASE)

IF ~ THEN ~ END IF

o  조건문은 IF명령어를 사용하여 조건에 일치하면 THEN 이후 문장을 실행한다.

o  사용 형식

     IF 조건문

          THEN 실행할 구문

     END IF;

DECLARE

    V_EMPNAME EMPLOYEE.EMP_NAME%TYPE;

BEGIN

    SELECT EMP_NAME

    INTO V_EMPNAME

    FROM EMPLOYEE

    WHERE EMP_ID='&사번';

   

    IF V_EMPNAME='선동일'         -- V_EMPNAME이 선동일이면 대표!’를 출력하는 조건문

        THEN DBMS_OUTPUT.PUT_LINE('대표!');

    END IF;

END;

/

 

IF ~ THEN ~ ELSE ~ END IF

o  ELSE 문은 IF문에서 해당하는 조건이 없는 경우 실행되는 구문이다.

o  사용형식

     IF 조건문

          THEN 실행할 구문

          ELSE 실행할 구문

     END IF;

DECLARE

    V_EMPNAME EMPLOYEE.EMP_NAME%TYPE;

BEGIN

    SELECT EMP_NAME

    INTO V_EMPNAME

    FROM EMPLOYEE

    WHERE EMP_ID='&사원아이디';

   

    IF V_EMPNAME='선동일'

        THEN DBMS_OUTPUT.PUT_LINE(V_EMPNAME||'=대표!');

        ELSE DBMS_OUTPUT.PUT_LINE(V_EMPNAME||'=사원!');

    END IF;

END;

/

 

IF ~ THEN ~ ELSIF ~ ELSE ~ END IF

o  IF ELSE 문은 IF문에서 해당하는 조건이 없는 경우 또다른 조건을 주어 해당하는지 확인하는 조건문이다.

o  사용형식

     IF 조건문

          THEN 실행할 구문

          ELSIF 실행할 구문

          ELSE 실행할 구문

     END IF;

사번을 입력 받아 해당하는 사원의 직책 코드가 J1이면 대표’ J2임원그 외면 사원출력하기.

 

DECLARE

    V_JOBCODE EMPLOYEE.JOB_CODE%TYPE;

BEGIN

    SELECT JOB_CODE

    INTO V_JOBCODE

    FROM EMPLOYEE

    WHERE EMP_ID='&사번';

   

    IF V_JOBCODE='J1' THEN DBMS_OUTPUT.PUT_LINE('대표');

        ELSIF V_JOBCODE='J2' THEN DBMS_OUTPUT.PUT_LINE('임원');

        ELSE DBMS_OUTPUT.PUT_LINE('사원');

    END IF;

END;

/

 

CASE

o  CASE문은 다수의 선택을 할 수 있는 조건문으로 입력된 값을 매칭하여 구문을 실행한다.

o  사용 형식

CASE [변수명]

   WHEN 변수값||조건문 THEN 실행 구문

DECLARE

    INPUTVALUE NUMBER;

BEGIN

    INPUTVALUE := '&수입력';

    CASE INPUTVALUE         -- 입력된 값에 따라 일치하는 값을 찾아 해당 구문 출력

        WHEN 1 THEN DBMS_OUTPUT.PUT_LINE(INPUTVALUE||'를 입력');

        WHEN 2 THEN DBMS_OUTPUT.PUT_LINE(INPUTVALUE||'를 입력');

        WHEN 3 THEN DBMS_OUTPUT.PUT_LINE(INPUTVALUE||'를 입력');

        ELSE DBMS_OUTPUT.PUT_LINE(INPUTVALUE||'는 없음');

    END CASE;

END;

/

 

 

-- CASE문으로 월급이 400이상이면 고액연봉, 200이상이면 연봉, 그 이하는 슬픔 출력하기

DECLARE

    V_SALARY EMPLOYEE.SALARY%TYPE;

BEGIN

    SELECT SALARY

    INTO V_SALARY

    FROM EMPLOYEE

    WHERE EMP_ID='&사번';

   

    CASE

        WHEN V_SALARY>=4000000 THEN DBMS_OUTPUT.PUT_LINE('고액연봉');

        WHEN V_SALARY>=2000000 THEN DBMS_OUTPUT.PUT_LINE('연봉');

        ELSE DBMS_OUTPUT.PUT_LINE('슬픔');

    END CASE;

END;

/