본문 바로가기
개발지식

오라클 프로시저에서 FOR 루프 활용하기: 예제와 설명

by hunovator 2024. 2. 8.
반응형

1. FOR 루프의 기본 구조와 활용 예제

오라클 프로시저에서 FOR 루프를 사용하면 반복 작업을 간단하고 효율적으로 수행할 수 있습니다. FOR 루프는 특정 횟수만큼 작업을 반복하거나 컬렉션의 각 요소에 대해 작업을 수행할 때 유용합니다. 이번 예제에서는 FOR 루프의 기본 구조와 간단한 예제를 살펴보겠습니다.

CREATE OR REPLACE PROCEDURE example_for_loop IS
BEGIN
  FOR i IN 1..5 LOOP
    DBMS_OUTPUT.PUT_LINE('Count: ' || i);
  END LOOP;
END;

위의 예제는 1부터 5까지의 숫자를 반복적으로 출력하는 간단한 프로시저입니다. FOR 루프는 FOR i IN 1..5 LOOP와 같은 구문으로 시작하며, 이 구문에서 i는 반복 변수입니다. 1..5는 반복 범위를 나타내며, 1부터 5까지의 숫자를 의미합니다. 각 반복에서 DBMS_OUTPUT.PUT_LINE을 사용하여 현재 반복 변수 i의 값을 출력합니다. 이제 이 프로시저를 실행하면 1부터 5까지의 숫자가 출력될 것입니다.

 

2. 컬렉션과 함께 FOR 루프 사용하기

FOR 루프는 단순히 숫자를 반복하는 것뿐만 아니라 컬렉션을 반복하는 데에도 사용할 수 있습니다. 배열이나 리스트와 같은 데이터 구조를 다룰 때 유용합니다. 아래 예제에서는 FOR 루프를 사용하여 컬렉션의 각 요소를 출력하는 방법을 살펴보겠습니다.

 

CREATE OR REPLACE PROCEDURE example_for_loop_with_collection IS
  TYPE name_list IS TABLE OF VARCHAR2(100);
  names name_list := name_list('Alice', 'Bob', 'Charlie', 'David');
BEGIN
  FOR i IN 1..names.COUNT LOOP
    DBMS_OUTPUT.PUT_LINE('Name: ' || names(i));
  END LOOP;
END;

 

이 예제에서는 name_list라는 VARCHAR2 타입의 컬렉션을 정의합니다. 그런 다음, names라는 이름의 컬렉션 변수를 선언하고 초기값으로 몇 가지 이름을 할당합니다. FOR 루프에서는 names.COUNT를 사용하여 컬렉션의 요소 수를 가져옵니다. 그런 다음 각 요소를 인덱스를 통해 접근하여 출력합니다. 이제 이 프로시저를 실행하면 컬렉션에 포함된 각 이름이 출력될 것입니다.

 

3. FORALL 구문과 함께 사용하기

FORALL은 여러 개의 데이터를 한 번에 처리할 때 유용한 SQL 문입니다. 이를 FOR 루프와 함께 사용하여 데이터베이스 작업을 효율적으로 수행할 수 있습니다. 아래 예제에서는 FORALL을 사용하여 컬렉션에 있는 데이터를 한 번에 데이터베이스 테이블에 삽입하는 방법을 살펴보겠습니다.

CREATE OR REPLACE PROCEDURE example_forall_with_bulk_insert IS
  TYPE emp_id_list IS TABLE OF employees.employee_id%TYPE;
  emp_ids emp_id_list := emp_id_list(101, 102, 103, 104, 105);
BEGIN
  FORALL i IN 1..emp_ids.COUNT
    INSERT INTO employees (employee_id, first_name, last_name)
    VALUES (emp_ids(i), 'John', 'Doe');
END;

이 예제에서는 emp_id_list라는 컬렉션을 정의하고 몇 가지 직원 ID를 할당합니다. FORALL 루프를 사용하여 각 직원 ID를 employees 테이블에 삽입하는 INSERT 문을 한 번에 실행합니다. 이렇게 하면 한 번의 커밋으로 모든 데이터가 삽입되므로 작업이 훨씬 효율적으로 수행됩니다.


오라클 프로시저에서 FOR 루프를 사용하는 방법에 대해 알아보았습니다. FOR 루프를 사용하여 반복 작업을 쉽게 수행하고 컬렉션을 처리할 수 있습니다. 또한 FORALL과 함께 사용하여 데이터베이스 작업을 효율적으로 수행할 수 있습니다. 이러한 기능들은 데이터베이스 개발 및 관리 작업을 보다 효율적으로 수행하는 데에 큰 도움이 될 것입니다.

반응형