분기명령
- PL/SQL에서 제공되는 분기문에는 IF, CASE WHEN ~ THEN이 존재 함
1) IF문
- 개발언어의 IF문과 동일 기능 제공
(사용형식 - 1)
IF 조건문 THEN
명령문1;
[ELSE
명령문2;]
END IF;
(사용형식-2)
IF 조건문1 THEN
명령문1;
ELSIF 조건문2 THEN --ELSEIF X
명령문2;
:
ELSE
명령문n;
END IF;
(사용형식-3)
IF 조건문1 THEN
IF 조건문2 THEN
명령문1;
ELSE
명령문2;
END IF;
ELSIF 조건문3 THEN
명령문3;
:
ELSE
명령문n;
END IF;
✔사용예) 년도를 입력받아 윤년과 평년을 구별하는 블록을 작성하시오.
윤년 : ((4의 배수)이면서 (100의 배수가 아니거나)) (400의 배수)가 되는 해
ACCEPT P_YEAR PROMPT '년도입력(YYYY) : '
DECLARE
L_YEAR NUMBER:=TO_NUMBER('&P_YEAR');
L_RES VARCHAR2(500);
BEGIN
IF (MOD(L_YEAR,4)= 0 AND MOD(L_YEAR,100)!=0) OR(MOD(L_YEAR,400)=0) THEN
L_RES:=L_YEAR||'년은 윤년입니다.';
ELSE
L_RES:=L_YEAR||'년은 평년입니다.';
END IF;
DBMS_OUTPUT.PUT_LINE(L_RES);
END;
✔사용예) 첫 날에 100원, 둘째날 부터 전날의 2배씩 저축할때 최초로 100만원을 넘는 날과
저축액수를 구하시오.
DECLARE
L_SUM NUMBER:= 0; -- 저축 총액
L_DAMT NUMBER:=100; --매일 저축할 액수
L_DAYS NUMBER:= 1; --날수
BEGIN
LOOP
L_SUM:=L_SUM+L_DAMT;
IF L_SUM>=1000000 THEN
EXIT;
ELSE
L_DAMT:=L_DAMT*2;
L_DAYS:=L_DAYS+1;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('날수 : '||L_DAYS);
DBMS_OUTPUT.PUT_LINE('저축액수 : '||L_SUM);
END;
2) CASE WHEN ~ THEN
- 다중분기문
- JAVA의 SWITCH CASE문과 유사 기능 제공
(사용형식-1)
CASE WHEN 조건1 THEN
명령1;
WHEN 조건2 THEN
명령2;
:
[ELSE
명령n;]
END CASE;
(사용형식-2)
CASE 조건
WHEN 값1 THEN
명령1;
WHEN 값2 THEN
명령2;
:
[ELSE
명령n;]
END CASE;
'ORACLE 복습 & 정리' 카테고리의 다른 글
[ORACLE] 저장프로시져 221201-04 (1) | 2022.12.01 |
---|---|
[ORACLE] 반복문 221201-03 (0) | 2022.12.01 |
[ORACLE] 커서(CURSOR) 2221201-01 (0) | 2022.12.01 |
[ORACLE] PL/SQL 221130-04 (1) | 2022.11.30 |
[ORACLE] INDEX 221130-03 (0) | 2022.11.30 |