JAVA와 마찬가지로 PL/SQL에서도 반복문을 지원해준다
세가지 종류가있으며 각각 어떻게 사용하는지 알아보자
BEGIN절 안에서 반복하고 싶은 작업을 만들어야할때 사용하면 좋다
DECLARE
선언부
BEGIN
LOOP
반복할 작업
EXIT WHEN 조건부분 -- 해당조건이 TRUE일 경우 반복문 탈출
END LOOP; -- 루프의 마지막부분
END;
/
EXIT WHEN 조건부분이 없다면 무한루프에 빠지게 되니 주의
DECLARE
NUM1 NUMBER :=1; -- BEGIN절에서 쓰려고 하는 변수 설정
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(NUM1); -- 출력기능
NUM1 := NUM1+1; -- 변수에 +1이라는 작업을함
EXIT WHEN NUM1 >10; -- 조건이 TRUE면 반복문탈출
END LOOP;
END;
/
NUM1은 반복할때마다 +1씩 증가하게 되고 출력도 반복할때마다 한번씩 출력한다
그러다 NUM1이 10보다 커진다면 LOOP의 조건절이 TRUE가 되기때문에 반복을 종료하고 탈출한다
결과값은 1부터 10까지 출력된다
DECLARE
선언부
BEGIN
WHILE(조건식)
LOOP
반복할 작업
[EXIT WHEN 조건식]
END LOOP;
END;
LOOP에서 조건부분이 WHILE로 옮겨졌을 뿐이지 기능적으로 똑같다
조건식이 TRUE면 LOOP를 탈출한다
추가로 EXIT WHEN 을 이용해 조건을 붙이는것도 가능하다
※ 조건식의 경우 결과값이 항상 TRUE 혹은 FALSE값이 나와야 한다는것을 잊지말자
DECLARE
NUM1 NUMBER :=1;
BEGIN
WHILE(NUM1<10) --NUM이 10보다 작을때까지 LOOP실행
LOOP
DBMS_OUTPUT.PUT_LINE(NUM1); --출력
NUM1 := NUM1+1; --NUM = NUM +1
END LOOP;
END;
1부터 9까지 출력되는 PL/SQL문인데 읽는 방식의 차이가 있다는걸 깨달아야한다
WHILE 안의 조건이 TRUE면 반복문 실행
EXIT WHEN 뒤의 조건이 TRUE면 반복문 탈출
이 차이만 알고 있으면 된다
DECLARE
BEGIN
FOR I IN 1..9
LOOP
DBMS_OUTPUT.PUT_LINE('안녕하세요'); --출력
END LOOP;
END;