반복문 (Loop)
이름 그대로 특정 작업을 반복해서 수행하기 위한 문(Statement)이다. Oracle PL/SQL에는 Loop와 For Loop가 있다.
LOOP
프로그래밍 언어의 while(true)처럼 무한히 반복하는 반복문이다. while에서 break를 사용해 반복문을 탈출하 듯, LOOP에서는 EXIT WHEN을 사용해 반복문을 탈출한다.
DECLARE
v_index number := 1;
BEGIN
DBMS_OUTPUT.PUT_LINE('반복문 시작');
LOOP
DBMS_OUTPUT.PUT_LINE(v_index || '회 반복중..');
EXIT WHEN v_index >= 10;
v_index := v_index + 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('반복문 끝');
END;
FOR LOOP
프로그래밍 언어의 for처럼 반복 횟수를 지정하여 반복시킬 수 있는 반복문이다. 배열이나 리스트에서 요소를 바로 꺼내올 수 있는 Java의 향상된 for문처럼, FOR LOOP는 선언된 명시적 커서에서 행을 바로 꺼내올 수 있다.
FOR LOOP에서 반복 횟수는 '시작..종료'로 표현할 수 있고 IN 키워드를 사용해 현재 숫자를 변수에 담아줄 수 있다.
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE('반복문 시작');
FOR idx IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(idx || '회 반복중..');
END LOOP;
DBMS_OUTPUT.PUT_LINE('반복문 끝');
END;
명시적 커서에서 FOR LOOP를 사용할 때는 'FOR 변수 IN 커서 LOOP'로 작성한다.
DECLARE
CURSOR cur_emp IS
SELECT *
FROM EMPLOYEES;
BEGIN
FOR emp IN cur_emp LOOP
DBMS_OUTPUT.PUT_LINE('사원 명 : ' || emp.first_name || ' ' || emp.last_name);
DBMS_OUTPUT.PUT_LINE('급여 : ' || emp.salary);
END LOOP;
END;
'데이터베이스 > Oracle' 카테고리의 다른 글
| [OracleDB] Group By (0) | 2023.06.14 |
|---|---|
| [OracleDB] 계층형 쿼리 (0) | 2023.06.14 |
| [PL/SQL] 커서(Cursor) (0) | 2023.06.14 |
| [OracleDB] TIMESTAMP로 데이터 복구하기 (0) | 2023.06.13 |
| [OracleDB] 윈도우(Window) 함수 (0) | 2023.06.12 |