조건문
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 |
댓글