경진의 블로그

PL/SQL - For Loop 반복문 본문

자바개발과정/오라클(Oracle)

PL/SQL - For Loop 반복문

aith 2008. 6. 3. 13:01
For Loop 반복문

반복문이며 정해진 횟수만큼 반복할 수 있다.

FOR 정수변수 IN [REVERSE] 시작번호..끝번호 LOOP
END LOOP;

FOR i IN 1..100 LOOP
END LOOP;

100부터 1까지 1씩 감소하면서 순서대로 반복하려면

FOR i IN REVERSE 1..100 LOOP
END LOOP;

5부터 100까지 5씩 증가시키려면

FOR i IN 5..100 LOOP
     IF MOD(i,5) = 0 THEN
     END IF;
END LOOP;

마지막으로 반복중간에 빠져나올 수 있는 기능을 가진 Exit문은 [EXIT WHEN 조건문;] 형식으로 사용된다.
만일 조건 없이 바로 빠져나오려면 [EXIT;]만 하면 된다.

 declare
 n_i number(10) :=0;
 n_sum number(10) :=0;
 s_msg varchar2(100) :='';
 begin
 for n_i in 1..100 loop
     n_sum := n_sum + n_i;
 end loop;
 dbms_output.put_line('1~100까지의 합은: '||to_char(n_sum));
 for n_i in reverse 1..10 loop
     s_msg := RPAD(' ',n_i + 1,'*');
     dbms_output.put_line(s_msg);
 end loop;
 n_sum := 0;
 for n_i in 1..100 loop
     if mod(n_i,5) = 0 then
         n_sum := n_sum + n_i;
     end if;
 end loop;
 dbms_output.put_line('1~100까지의 5의 배수의 합은: '||to_char(n_sum));
 n_sum := 0;
 for n_i in 1..100 loop
     n_sum := n_sum + n_i;
     exit when n_i = 50;
 end loop;
 dbms_output.put_line('1~100 더하다가 50에서 멈추면: '||to_char(n_sum));
 end;
/

declare
n_i number(10) := 0;
n_j number(10) := 0;
n_i2 number(10) := 0;
n_j2 number(10) := 0;
begin
    --loop문 안의 loop문 => exit문 1번 사용시
    for n_i in 1..100 loop
        n_i2 := n_i;
        for n_j in 1..100 loop
            n_j2 := n_j;
            exit when(n_i = 50 and n_j = 50);
        end loop;
    end loop;
    dbms_output.put_line('n_i:'||to_char(n_i2)||' n_j:'||to_char(n_j2));
    --loop문 안의 loop문 => exit문 2번 사용시
    for n_i in 1..100 loop
        n_i2 := n_i;
        for n_j in 1..100 loop
            n_j2 := n_j;
            exit when(n_i = 50 and n_j = 50);
        end loop;
        exit when n_i = 50;
    end loop;
    dbms_output.put_line('n_i:'||to_char(n_i2)||' n_j:'||to_char(n_j2));
    --loop문 안의 loop문 => exit문 1번 사용. label 사용시
    <<label_for>>
    for n_i in 1..100 loop
        n_i2 := n_i;
        for n_j in 1..100 loop
            n_j2 := n_j;
            exit when(n_i = 50 and n_j = 50);
        end loop;
        exit label_for when(n_i = 50 and n_j = 50);
    end loop;
    dbms_output.put_line('n_i:'||to_char(n_i2)||' n_j:'||to_char(n_j2));
    /*
    * 32번 라인에서 n_i와 n_j가 같을 때 반복문을 빠져나간다
    * 그러나 34번 라인에서 label_for로 값을 보내 다시 반복한다
    */

end;
/

'자바개발과정 > 오라클(Oracle)' 카테고리의 다른 글

PL/SQL - Loop 반복문  (0) 2008.06.03
PL/SQL - While Loop 순환문  (0) 2008.06.03
PL/SQL - For Loop 반복문  (0) 2008.06.03
PL/SQL - For Loop 반복문  (0) 2008.06.02
PL/SQL - IF 조건 분기문  (0) 2008.06.02
PL/SQL  (0) 2008.06.02
0 Comments
댓글쓰기 폼