Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

꺄르륵

[Oracle SQL Developer] 기초 XXIV - LOOP 본문

프로그래밍/DB

[Oracle SQL Developer] 기초 XXIV - LOOP

Teddy. 2019. 10. 29. 20:00

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;