DataBase/Oracle

18. Oracle PL/SQL 반복문

유가엘 2020. 4. 3. 10:38

17_RepeatStatmt.sql
0.00MB

Basic Loop
무조건 1번은 실행 한 후 조건에 맞지 않으면 실행하지 않습니다.

 

Basic Loop 문의 구조

Loop
    PL/SQL 문장;
    EXIT 조건 ;
END LOOP;

SET SERVEROUTPUT ON; 

DECLARE 
    num number := 0; 
BEGIN 
    LOOP 
        dbms_output.put_line(num); 
        num := num+1; 
        EXIT WHEN num >10; 
    END LOOP; 
END; 
/ 

--------------------------------------------------- 

DECLARE 
    num number := 10; 
BEGIN 
    LOOP 
        dbms_output.put_line(num); 
        num := num-1; 
        EXIT WHEN num = -1; 
    END LOOP; 
END; 
/ 

While 문
조건을 먼저 확인 후 실행 여부를 판단 합니다.

 

While 문의 구조
WHILE 조건 LOOP
    실행 문장;
END LOOP;

DECLARE 
    num number := 0; 
BEGIN 
    WHILE num <11 LOOP 
        dbms_output.put_line(num); 
        num := num +1; 
    END LOOP; 
END; 
/ 

-------------------------------------------

DECLARE 
    num number := 10; 
BEGIN 
    WHILE num >=0 LOOP 
        dbms_output.put_line(num); 
        num := num -1; 
    END LOOP; 
END; 

For 문
반복 횟수를 지정할 수 있습니다.

 

For 문의 구조 
For n:카운터 횟수 IN START...END  LOOP
    실행문장;
END LOOP;

BEGIN 
    FOR num IN 0..10 LOOP 
        dbms_output.put_line(num); 
    END LOOP; 
END; 

--------------------------------------------------- 

BEGIN 
    FOR num IN REVERSE 0..10 LOOP 
        dbms_output.put_line(num); 
    END LOOP; 
END; 

Continue 문

Oracle 11g 에서 추가되었으며 보조제어합니다.
조건에 부합할때 상위로 올라갑니다.

DECLARE 
    tot number := 0; 
BEGIN 
    FOR i in 1..10 LOOP 
        tot := tot+1; 
        dbms_output.put_line('tot:'||tot); 
         
        CONTINUE WHEN (i>5); 
        
        tot := tot+i; 
        dbms_output.put_line('tot2:'||tot); 
    END LOOP; 
END;