본문 바로가기

SQL/Oracle

[Oracle] 반복문

728x90

loop문
    loop
        반복할 문장;
    exit when 조건문; -- 조건문이 true면 종료, exit문이 없으면 무한루프
    end loop;

declare
    num number := 1;
begin
    loop
        dbms_output.put_line(num);
        num := num + 1;
    exit when num > 10;
    end loop;
end;

 

변수값과 문자열

변수명 || '문자열'

declare
    num number := 1;
begin
    loop
        dbms_output.put_line(num || 'ㅇㅅㅇ');
        num := num + 1;
    exit when num > 10;
    end loop;
end;


while문
    while(조건식) -- 조건식이 ture인 동안 반복
        loop
            반복할 문장;
        end loop;

declare
    num number := 1;
begin
    while(num <= 10)
        loop
            dbms_output.put_line(num || 'ㅇㅅㅇ');
            num := num + 1;
        end loop;
end;

반복문을 사용해 구구단 7단 출력

declare
    dan number := 7;
    num number := 1;
begin
    while(num < 10)
    loop
        dbms_output.put_line(dan || ' * ' || num || ' = ' || dan * num);
        num := num + 1;
    end loop;
end;

for문
    for 변수 in 초기값..최종값
        loop
            반복할 문장
        end loop;

begin
    for i in 1..10
        loop
            dbms_output.put_line('Hello Oracle');
        end loop;
end;

 

문제.

for문을 이용하여 1 ~ 10까지 아래와 같이 출력
    1 홀수!
    2 짝수!
    3 홀수!
    4 짝수!
    ...
    10 짝수!

begin
    for i in 1..10
        loop
            if mod(i, 2) = 0 then
                dbms_output.put_line(i || ' 짝수!');
            else
                dbms_output.put_line(i || ' 홀수!');
            end if;
        end loop;
end;

나머지 값 구하기

mod(값, 나눌 값)


문제.

tb_gugudan 테이블 생성
    gu_dan 단
    gu_num 수
    gu_result 결과
    
    2 ~ 9단까지 2중 for문을 이용하여 tb_gugudan 테이블에 값 저장

테이블 생성

create table tb_gugudan (
    gu_dan number not null,
    gu_num number not null,
    gu_result number not null
);
declare
    dan number := 2;
    num number := 1;
begin
    
    for dan in 2..9
        loop
            for num in 1..9
                loop
                    insert into tb_gugudan values (dan, num, dan * num);
                end loop;
        end loop;
end;

테이블 조회

select * from tb_gugudan;

 

728x90

'SQL > Oracle' 카테고리의 다른 글

[Oracle] 프로시저(procedure)  (0) 2022.06.16
[Oracle] 예외 처리(Exception)  (0) 2022.06.16
[Oracle] 조건문  (0) 2022.06.16
[Oracle] PL/SQL  (0) 2022.06.16
[Oracle] sequence  (0) 2022.06.16