WHILE문
일반적인 프로그래밍 언어에서 대표적인 반복문을 꼽으라면 WHILE문과 FOR문을 들 수 있다. 오라클에서도 역시 이 두 문장을 제공하는데, 먼저 WHILE문에 대해 살펴 보자.
WHILE 조건
LOOP
처리문;
END LOOP;
WHILE문은 LOOP문과 비슷하지만 WHILE 다음에 조건을 붙여 해당 조건에 만족할 때만 루프를 돌면서 로직을 처리한다. WHILE문을 사용해 구구단 3단을 출력해 보자.
입력
DECLARE
vn_base_num NUMBER := 3;
vn_cnt NUMBER := 1;
BEGIN
WHILE vn_cnt <= 9 -- vn_cnt가 9보다 작거나 같을 때만 반복 처리
LOOP
DBMS_OUTPUT.PUT_LINE (vn_base_num || '*' || vn_cnt || '= ' || vn_base_num * vn_cnt);
vn_cnt := vn_cnt + 1; -- vn_cnt 값을 1씩 증가
END LOOP;
END;
결과
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
WHILE 다음에 조건 처리를 한 부분만 제외하면 다른 부분은 LOOP문과 같지만, LOOP문과 달리 vn_cnt 값이 9보다 작거나 같은 경우라는 조건을 주었다는 점을 눈여겨 보자. LOOP문에서는 루프를 빠져 나가는 조건을 주었지만, WHILE문에서는 루프를 수행하는 조건을 준 것이다.
WHILE문에서도 루프를 돌다가 특정 조건에 부합하면 EXIT를 써서 루프를 빠져나올 수 있다.
입력
DECLARE
vn_base_num NUMBER := 3;
vn_cnt NUMBER := 1;
BEGIN
WHILE vn_cnt <= 9 -- vn_cnt가 9보다 작거나 같을 때만 반복 처리
LOOP
DBMS_OUTPUT.PUT_LINE (vn_base_num || '*' || vn_cnt || '= ' || vn_base_num * vn_cnt);
EXIT WHEN vn_cnt = 5; -- vn_cnt 값이 5가 되면 루프 종료
vn_cnt := vn_cnt + 1; -- vn_cnt 값을 1씩 증가
END LOOP;
END;
결과
3*1= 3
3*2= 6
3*3= 9
3*4= 12
3*5= 15