본문 바로가기

📚Study Note/ORACLE

[ ORACLE ] 반복문 3가지 │ LOOP │ WHILE LOOP │ FOR LOOP

-- ● 기본 반복문
-- 


-- LOOP ~ END LOOP;  (루프 시작했다 루프 끝났다)
-- 1. 조건과 상관없이 무조건 반복하는 구문.
-- 2. 형식 및 구조

LOOP
    -- 실행문;           사이에 실행문 오게 된다. 반복을 해야되는 구문이다. 
    -- EXIT WHEN 조건;   조건이 참인 경우 반복문을 빠져나간다. 
END LOOP;

-- ● 1 부터  100 까지의 수 출력(LOOP 문 활용)

DECLARE
    N   NUMBER;
BEGIN
    N := 1;
    LOOP
        DBMS_OUTPUT.PUT_LINE(N);
        EXIT WHEN N>=10;
        N := N+1;           -- N++; N+=1; 자바의 이것들과 같다
        
    END LOOP;
END;

/*

1
2
3
4
5
6
7
8
9
10


PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/

-- ● WHILE 반복문
-- WHILE LOOP ~ END LOOP;

-- 1. 제어 조건이 TRUE 인 동안 일련의  문장을 반복하기 위해
--  WHILE LOOP 문장을 사용한다.
-- 조건은 반복이 시작될 때 체크하게 되어
-- LOOP 내의 문장이 한 번도 수행되지 않을 경우도 있다.
-- LOOP 를 시작할 때 조건이 FALSE 이면 반복 문장을 탈출하게 된다.

 

 

2. 형식 및 구조
WHILE 조건 LOOP -- 조건이 참인 경우 반복 수행
    -- 실행문;
END LOOP;

 

 

 

-- ● 1 부터 10 까지의 수 출력(WHILE LOOP 문 활용)

DECLARE
    N   NUMBER;
BEGIN
    N := 0;
    WHILE N<10 LOOP
        N:=N+1;
        DBMS_OUTPUT.PUT_LINE(N);
    END LOOP;
END;

/*
1
2
3
4
5
6
7
8
9
10


PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/

 

-- ● FOR 반복문
-- FOR LOOP ~ END LOOP;

-- 1. 『 시작 수『 에서 1씩 증가하여
--    『끝나는 수』 가 될 때 까지 반복 수행한다.
    
    
    
    2. 형식 및 구조
    
    FOR 카운터 IN [REVERSE] LOOP 시작수..끝냄수 LOOP
        -- 실행문;
        
    END LOOP;
    
   

-- ● 1부터 10 까지의 수 출력(FOR LOOP 문 활용)

DECLARE
    N   NUMBER;
BEGIN 
    FOR N IN 1..10 LOOP
        DBMS_OUTPUT.PUT_LINE(N);
    END LOOP;
END;
    
/*
1
2
3
4
5
6
7
8
9
10


PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/

 

<구구단 3가지 반복문으로 출력하기>

-- ● 사용자로부터 임의의 단(구구단)을 입력받아
-- 해당 단수의 구구단을 출력하는 PL/SQL 구문을 작성한다.
-- LOOP, WHILE LOOP, FOR LOOP 를 통해 해결한다.

 

/*
실행 예)
바인딩 변수 입력 대화창 → 단을 입력하세요 : 2

2*1=2
2*2=4
:
:
2*9=18

*/

 

 

--▶[LOOP]
ACCEPT VAR PROMPT '구구단의 단 입력(예: 2)';

DECLARE
    DAN   NUMBER;
    N   NUMBER;
BEGIN
    DAN := &VAR;
    N := 1;
    DBMS_OUTPUT.PUT_LINE('입력받은 단 : ' || DAN);
    
    LOOP
        DBMS_OUTPUT.PUT_LINE(DAN||' * '||N||' = '|| DAN*N);
        EXIT WHEN N >= 9;
        N := N+1;           
        
    END LOOP;
END;
/*
입력받은 단 : 3
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27


PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/



--▶[WHILE LOOP]
ACCEPT VAR PROMPT '구구단의 단 입력(예: 2)';
DECLARE
    DAN   NUMBER;
    GOB   NUMBER;
BEGIN
    DAN := &VAR;
    GOB := 1;
    
    WHILE GOB<10 LOOP
        
        DBMS_OUTPUT.PUT_LINE(DAN || '*'||GOB||'='||DAN*GOB);
        GOB:=GOB+1;
    END LOOP;
END;

/*
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45


PL/SQL 프로시저가 성공적으로 완료되었습니다.*/


--▶[FOR LOOP]

ACCEPT VAR PROMPT '구구단의 단 입력(예: 2)';
DECLARE
    DAN   NUMBER;
    N     NUMBER;
BEGIN 
    DAN := &VAR;
    N := 1;
    FOR N IN 1..9 LOOP
        DBMS_OUTPUT.PUT_LINE(DAN || ' * '||N||' = '||DAN*N);
    END LOOP;
END;
/*
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72


PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/