반복문(LOOP, FOR, WHILE)
BASIC LOOP
o 특정 조건까지만 반복문을 수행하며 EXIT 예약어에 반복을 중지할 수 있는 조건을 작성한다.
o EXIT는 실행하는반복문을 빠져나오는 예약어로 EXIT가 없을 경우 무한 루프에 빠질 수 있다.
o 사용형식
LOOP
실행할 구문
EXIT 조건문
END LOOP
1~10까지 출력하기
DECLARE I NUMBER :=1; BEGIN LOOP DBMS_OUTPUT.PUT_LINE(I); I:=I+1; -- IF I>10 THEN EXIT; -- IF문을 활용한 EXIT 실행 -- END IF; -- IF문 또는 EXIT WHEN I>10; EXIT WHEN I>10; END LOOP; END; / |
FOR
o FOR문은 FOR EACH문과 비슷하게 사용할 수 있다.
o 인덱스 값을 DECLARE에서 선언하지 않아도 되기에 반복문 중 간결하게 사용할 수 있다.
o 사용 형식
FOR 변수 IN 범위||SELECT문 LOOP
실행 구문
END LOOP;
* 범위 : 시작숫자..끝숫자 -> FOR문의 변수에 범위의 숫자가 순차적으로 대입됨.
* SELECT문 : SELECT문의 ROW가 변수에 저장된다.
1부터 10까지 출력하기 BEGIN FOR I IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE(I); END LOOP; END; /
-- 역순으로 출력 (REVERSE) BEGIN FOR I IN REVERSE 1..10 LOOP DBMS_OUTPUT.PUT_LINE(I); END LOOP; END; / |
EMPLOYEE에 있는 10개의 ROW출력하기 EMP_ID, EMP_NAME, SALARY 시작은 EMP_ID 200부터 209까지 출력
DECLARE E EMPLOYEE%ROWTYPE; V_EMP_ID EMPLOYEE.EMP_ID%TYPE; BEGIN V_EMP_ID:=200; FOR K IN 1..10 LOOP -- FOR 방법 1 SELECT * INTO E FROM EMPLOYEE WHERE EMP_ID=V_EMP_ID; V_EMP_ID:=V_EMP_ID+1; DBMS_OUTPUT.PUT_LINE(E.EMP_ID||E.EMP_NAME||E.SALARY); END LOOP;
FOR K IN (SELECT * FROM EMPLOYEE) LOOP -- FOR 방법 2 DBMS_OUTPUT.PUT_LINE(K.EMP_ID||K.EMP_NAME||K.SALARY); EXIT WHEN K.EMP_ID='209'; END LOOP; END; / |
WHILE
o WHILE문은 LOOP의 EXIT 조건문을 WHILE 다음으로 작성하는 것만 다르고 나머지는 LOOP와 동일하다.
o 사용형식
WHILE 조건식 LOOP
실행할 구문
EXIT 조건문
END LOOP
DECLARE I NUMBER :=1; BEGIN WHILE(I<10) LOOP DBMS_OUTPUT.PUT_LINE(I); I:=I+1; END LOOP; END; / |
'DB' 카테고리의 다른 글
[SQL] PL/SQL – PROCEDURE & FUNCTION (0) | 2021.03.29 |
---|---|
[SQL] PL/SQL – 조건문(IF, ELSE, ELSIF, CASE) (0) | 2021.03.25 |
[SQL] PL/SQL – 타입 변수 선언, SELECT, INSERT문 처리 (0) | 2021.03.23 |
[SQL] OBJECT SEQUENCE - 순차적 번호 생성 (0) | 2021.03.23 |
[SQL] VIEW – 인라인 뷰, 스토어드 뷰, VIEW 옵션 (0) | 2021.03.22 |