꺄르륵
[Oracle SQL Developer] 기초 XXIV - LOOP 본문
1.반복문 LOOP
1.1.설명
- PL/SQL에서 제공하는 반복문은 LOOP, WHILE, FOR 문이 존재한다.
1.2. LOOP 문
- 반드시 한번은 실행된다.
(1) 사용형식
LOOP
반복처리할 명령문;
EXIT [WHEN 조건];
END LOOP;
- 'EXIT' 문을 만나면 반복을 종료한다.
- EXIT WHEN 을 사용하면 '조건'이 충족(TRUE)되면 반복이 종료된다.
EX) 3단을 출력하시오
DECLARE
V_NUM NUMBER(1);
V_BASE NUMBER(1) := 3;
BEGIN
V_NUM := 1;
LOOP
DBMS_OUTPUT.PUT_LINE(V_BASE || '*' || V_NUM || '=' ||(V_BASE * V_NUM));
EXIT WHEN V_NUM =9;
V_NUM := V_NUM+1;
END LOOP;
END;
EX) 1-50 사이에 존재하는 피보나치 수열을 출력하시오.
피보나치 수열 : 1 1 2 3 5 8 13 21 34 55 ...
DECLARE
V_PPNUM NUMBER := 1;
V_PNUM NUMBER := 1;
V_CNUM NUMBER;
SUMNUM VARCHAR2(50);
BEGIN
SUMNUM := V_PPNUM || ',' || V_PNUM;
LOOP
V_CNUM := V_PNUM + V_PPNUM;
EXIT WHEN V_CNUM >= 50;
SUMNUM := SUMNUM || ', ' || V_CNUM;
V_PPNUM := V_PNUM;
V_PNUM := V_CNUM;
END LOOP;
DBMS_OUTPUT.PUT_LINE(SUMNUM);
END;
EX) 저축을 하려한다. 첫 날 100원, 두째날 부터 전날의 두배씩 저축할 때 최초로
100만원을 넘는 날 수와 저축금액을 구하시오.
DECLARE
V_AMT NUMBER := 100;
V_SAVE NUMBER;
V_COUNT NUMBER := 1;
BEGIN
LOOP
V_SAVE := V_SAVE + V_AMT;
EXIT WHEN V_SAVE > 1000000;
V_AMT := V_AMT * 2;
V_COUNT := V_COUNT + 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('일 : ' || V_COUNT || ', 금액' || V_SAVE);
END;
'프로그래밍 > DB' 카테고리의 다른 글
ERWIN_테이블 스크립트로 erd 그리기 (0) | 2021.12.28 |
---|---|
[Oracle SQL Developer] 기초 XXV - CURSOR (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XXIII - PL/SQL 변수 (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XXI - PL/SQL (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XX - SYNONYM 객체 (0) | 2019.10.29 |