1HOON
논리적 코딩
1HOON
전체 방문자
오늘
어제
  • HOME (186)
    • ☕️ JAVA (28)
      • WhiteShip Java LIVE Study (6)
      • Effective JAVA (10)
    • 🔮 KOTLIN (4)
    • 🌱 SPRING (51)
      • 스프링 인 액션 (22)
      • JPA (18)
    • ☕️ JAVASCRIPT (6)
    • 📃 DATABASE (40)
      • ORACLE (37)
      • MSSQL (2)
    • 🐧 LINUX (4)
    • 🐳 DOCKER (5)
    • 🐙 KUBERNETES (4)
    • 🏗️ ARCHITECTURE (8)
    • 📦 ETC (26)
      • TOY PROJECT (5)
      • RECRUIT (1)
      • 그냥 쓰고 싶어서요 (14)
    • 🤿 DEEP DIVE (1)
    • 🚽 Deprecated (9)
      • PYTHON (3)
      • AWS (2)
      • HTTP 완벽가이드 (3)
      • WEB (1)

블로그 메뉴

  • 홈
  • 방명록
  • 관리

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
1HOON

논리적 코딩

[PL/SQL] IF문 / CASE문
📃 DATABASE/ORACLE

[PL/SQL] IF문 / CASE문

2018. 1. 21. 14:40

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;
Colored by Color Scripter
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;
Colored by Color Scripter
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;
Colored by Color Scripter
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;
Colored by Color Scripter
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
    '📃 DATABASE/ORACLE' 카테고리의 다른 글
    • [PL/SQL] 사용자 정의함수
    • [PL/SQL] 반복문
    • [PL/SQL] PL/SQL 기초
    • [SQL] 다중 테이블 INSERT
    1HOON
    1HOON

    티스토리툴바