IF문
특정 조건에 따라 처리하는 조건문의 대표적인것
조건이 한 개일때
1 2 3 | IF 조건 THEN 조건처리; END IF; | cs |
조건이 두 개일때
1 2 3 4 5 | IF 조건 THEN 조건처리; ELSE 조건처리; END IF; | cs |
조건이 여러 개일때
1 2 3 4 5 6 7 8 | IF 조건 THEN 조건처리; ELSIF 조건2 THEN 조건처리; ... ELSE 조건처리N; END IF; | cs |
예제
1 2 3 4 5 6 7 8 9 10 | DECLARE VN_NUM1 NUMBER := 1; VN_NUM2 NUMBER := 2; BEGIN IF VN_NUM1 >= VN_NUM2 THEN DBMS_OUTPUT.PUT_LINE(VN_NUM1 || '이 큰 수'); ELSE DBMS_OUTPUT.PUT_LINE(VN_NUM2 || '이 큰 수'); END IF; END; | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | DECLARE VN_SALARY NUMBER := 0; VN_DEPARTMENT_ID NUMBER := 0; BEGIN VN_DEPARTMENT_ID := ROUND(DBMS_RANDOM.VALUE(10, 120), -1); SELECT SALARY INTO VN_SALARY FROM EMPLOYEES WHERE DEPARTMENT_ID = VN_DEPARTMENT_ID AND ROWNUM = 1; DBMS_OUTPUT.PUT_LINE(VN_SALARY); IF VN_SALARY BETWEEN 1 AND 3000 THEN DBMS_OUTPUT.PUT_LINE('낮음'); ELSIF VN_SALARY BETWEEN 3001 AND 6000 THEN DBMS_OUTPUT.PUT_LINE('중간'); ELSIF VN_SALARY BETWEEN 6001 AND 10000 THEN DBMS_OUTPUT.PUT_LINE('높음'); ELSE DBMS_OUTPUT.PUT_LINE('최상위'); END IF; END; | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | DECLARE VN_SALARY NUMBER := 0; VN_DEPARTMENT_ID NUMBER := 0; VN_COMMISSION NUMBER := 0; BEGIN VN_DEPARTMENT_ID := ROUND(DBMS_RANDOM.VALUE(10, 120), -1); SELECT SALARY, COMMISSION_PCT INTO VN_SALARY, VN_COMMISSION FROM EMPLOYEES WHERE DEPARTMENT_ID = VN_DEPARTMENT_ID AND ROWNUM = 1; DBMS_OUTPUT.PUT_LINE(VN_SALARY); IF VN_COMMISSION > 0 THEN IF VN_COMMISSION > 0.15 THEN DBMS_OUTPUT.PUT_LINE(VN_SALARY * VN_COMMISSION); END IF; ELSE DBMS_OUTPUT.PUT_LINE(VN_SALARY); END IF; END; | cs |
CASE문
첫번째 유형
1 2 3 4 5 6 7 8 9 | CASE 표현식 WHEN 결과1 THEN 처리문1; WHEN 결과2 THEN 처리문2; ... ELSE 기타 처리문; END CASE; | cs |
두번째 유형
1 2 3 4 5 6 7 8 | CASE WHEN 표현식1 THEN 처리문1; WHEN 표현식2 THEN 처리문2; ... ELSE 기타 처리문; END CASE; | cs |
WHEN 이하에서 다양한 표현식을 사용해 조건을 검색할 수 있기 때문에 보통은 두번째 유형을 주로 사용한다.
예제
위의 IF문으로 작성된 코드를 CASE문 두번째 유형으로 작성해보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | DECLARE VN_SALARY NUMBER := 0; VN_DEPARTMENT_ID NUMBER := 0; BEGIN VN_DEPARTMENT_ID := ROUND(DBMS_RANDOM.VALUE (10, 120), -1); SELECT SALARY INTO VN_SALARY FROM EMPLOYEES WHERE DEPARTMENT_ID = VN_DEPARTMENT_ID AND ROWNUM = 1; DBMS_OUTPUT.PUT_LINE(VN_SALARY); CASE WHEN VN_SALARY BETWEEN 1 AND 3000 THEN DBMS_OUTPUT.PUT_LINE('낮음'); WHEN VN_SALARY BETWEEN 3001 AND 6000 THEN DBMS_OUTPUT.PUT_LINE('중간'); WHEN VN_SALARY BETWEEN 6001 AND 10000 THEN DBMS_OUTPUT.PUT_LINE('높음'); ELSE DBMS_OUTPUT.PUT_LINE('최상위'); END CASE; END; | cs |
반응형
'📃 DATABASE > ORACLE' 카테고리의 다른 글
[PL/SQL] 사용자 정의함수 (0) | 2018.01.22 |
---|---|
[PL/SQL] 반복문 (0) | 2018.01.21 |
[PL/SQL] PL/SQL 기초 (0) | 2018.01.17 |
[SQL] 다중 테이블 INSERT (1) | 2018.01.16 |
[SQL] WINDOW 함수 (0) | 2018.01.16 |