본문 바로가기
Programming/오라클[SQL]

오라클[sql] 조건문 IF / CASE

by 콩king 2022. 9. 24.

조건문

 

IF 조건문

  IF 조건 THEN 쿼리문;

  ELSIF 조건 THEN 쿼리문;

  ELSE 쿼리문;   -- ELSE 아무것도 없으면 ELSE NULL; 라고 작성

  END IF;

 

CASE 조건

  CASE 조건

  WHEN 구조 THEN 쿼리문;

  WHEN 상태 THEN 쿼리문;

  ELSE 쿼리문;

  END CASE;

 

예제

▶ SET serverOUTPUT ON

 

▶ 사원테이블에 입력 > 조건 부서번호 20번이면 급여 30%를 추가 하고 입력

ACCEPT p_name PROMPT '이름 : '

ACCEPT p_sal PROMPT '급여 : '

ACCEPT p_deptno PROMPT '부서번호 : '

 

DECLARE

  v_name emp.ename%TYPE := UPPER('&p_name');

  v_sal emp.sal%TYPE := &p_sal;

  v_deptno emp.deptno%TYPE := &p_deptno;

BEGIN

  IF v_deptno = 20

    THEN v_sal := v_sal * 1.3;

  END IF;

 

  INSERT INTO emp(empno, ename, sal, deptno)

  VALUES ( SEQ_NO.nextval, v_name, v_sal, v_deptno);

  COMMIT;

END;

/

>> 홍길동 / 1000 / 20 입력시

 

이름을 가진 사람의 업무를 찾아서  MANAGER 10% ANALYST 20% SALESMAN 30% PRESIDENT 40% CLERK 50%

급여를 UPDATE 해주세요

 

---CASE문------------------------------------------

ACCEPT p_name PROMPT '이름 : '

DECLARE

  -- 변수 이름, 급여, 업무, 사원번호

  v_name emp.ename%TYPE := UPPER('&p_name');

  v_job emp.job%TYPE;

  v_sal emp.sal%TYPE;

  v_empno emp.empno%TYPE;

BEGIN

  -- 조회 사원번호, 급여, 업무

  -- 조건 이름이 같은 사원

  SELECT empno, sal, job

  INTO v_empno, v_sal, v_job

  FROM emp

  WHERE ename = v_name;

  --케이스

   CASE v_job

    WHEN 'MANAGER' THEN v_sal := v_sal * 1.1;

    WHEN 'ANALYST' THEN v_sal := v_sal * 1.2;

    WHEN 'SALESMAN' THEN v_sal := v_sal * 1.3;

    WHEN 'PRESIDENT' THEN v_sal := v_sal * 1.4;

    WHEN 'CLERK' THEN v_sal := v_sal * 1.5;

  END CASE;

  -- 업데이트 

 UPDATE emp

  SET sal = v_sal

  WHERE empno = v_empno;

  DBMS_output.put_line(SQL%ROWCOUNT || '행을 수정하였습니다.');

END;

/

 

---IF문------------------------------------------

ACCEPT p_name PROMPT '이름 : '

DECLARE
  -- 변수 이름, 급여, 업무, 사원번호

  v_name emp.ename%TYPE := UPPER('&p_name');

  v_job emp.job%TYPE;

  v_sal emp.sal%TYPE;

  v_empno emp.empno%TYPE;

BEGIN

  -- 조회 사원번호, 급여, 업무

  -- 조건 이름이 같은 사원

  SELECT empno, sal, job

  INTO v_empno, v_sal, v_job

  FROM emp

  WHERE ename = v_name;

  -- IF문

  IF v_job = 'MANAGER' THEN v_sal := v_sal * 1.1;

  ELSIF v_job = 'ANALYST' THEN v_sal := v_sal * 1.2;

  ELSIF v_job = 'SALESMAN' THEN v_sal := v_sal * 1.3;

  ELSIF v_job = 'PRESIDENT' THEN v_sal := v_sal * 1.4;

  ELSIF v_job = 'CLERK' THEN v_sal := v_sal * 1.5;

  ELSE v_sal := v_sal * 1.6;

  END IF;

  -- 업데이트

  UPDATE emp

  SET sal = v_sal

  WHERE empno = v_empno;

END;

/

'Programming > 오라클[SQL]' 카테고리의 다른 글

오라클[sql] 커서 CURSOR  (0) 2022.09.24
오라클[sql] 반복문  (0) 2022.09.24
오라클[sql] PL/SQL  (0) 2022.09.24
오라클[sql] 시퀀스 / 인덱스  (0) 2022.09.24
오라클[sql] merge / commit / rollback  (0) 2022.09.24

댓글