프로그래밍/기타

[PL/SQL] Cursor-based FOR LOOP 활용하기

흔한티벳여우 2023. 8. 25. 17:43
반응형

 데이터베이스 작업을 할 때, 종종 특정 쿼리 결과를 순회하며 작업을 수행해야 합니다. Oracle PL/SQL에서는 Cursor-based FOR LOOP라는 강력한 구조를 제공하여 이런 작업을 단순화합니다. 이 글에서는 해당 구조의 기본 문법과 함께 활용 예시를 알아봅니다.

 

Cursor-based FOR LOOP의 기본 문법

Cursor-based FOR LOOP는 Oracle PL/SQL에서 제공하는 반복 구조 중 하나로, SELECT 문의 결과를 순회할 때 주로 사용됩니다.

FOR cursor_variable IN (SELECT 문)
LOOP
   -- 반복할 로직
END LOOP;

 

이 구조의 장점은 다음과 같습니다:

  1. 간결성: 명시적인 커서 선언, OPEN, FETCH, CLOSE 등의 작업 없이 직관적인 방식으로 데이터를 순회합니다.
  2. 자동 관리: LOOP는 SELECT 문의 결과가 없을 때 자동으로 종료됩니다.

사용 예제

예제 1: 직원 정보 출력하기

BEGIN
    FOR emp_record IN (SELECT first_name, last_name, salary FROM employees WHERE department_id = 10)
    LOOP
        DBMS_OUTPUT.PUT_LINE(emp_record.first_name || ' ' || emp_record.last_name || ': ' || emp_record.salary);
    END LOOP;
END;

예제 2: 월급 인상하기

DECLARE
    increase_rate NUMBER := 0.1;
BEGIN
    FOR emp_record IN (SELECT employee_id, salary FROM employees WHERE salary > 5000)
    LOOP
        UPDATE employees SET salary = salary * (1 + increase_rate) WHERE employee_id = emp_record.employee_id;
    END LOOP;
    COMMIT;
END;

예제 3: 재고가 없는 제품 정보 보기

BEGIN
    FOR product_record IN (SELECT product_name, stock FROM products WHERE stock = 0)
    LOOP
        DBMS_OUTPUT.PUT_LINE('재고가 없는 제품: ' || product_record.product_name);
    END LOOP;
END;

주의 사항

  • Cursor-based FOR LOOP는 일반적으로 소량의 데이터를 처리하는 데 적합합니다. 많은 양의 데이터를 처리할 때는 자원 사용량이 증가할 수 있으므로 다른 접근 방식을 고려해야 할 수도 있습니다.
  • 명시적 커서를 사용하는 것보다 간결하고 관리하기 쉽지만, 복잡한 로직이나 추가적인 커서 제어가 필요한 경우에는 명시적 커서를 사용하는 것이 더 적합할 수 있습니다.

결론

Cursor-based FOR LOOP는 Oracle PL/SQL 작업에서 효율적인 데이터 처리를 위한 필수 도구입니다. 기본 문법을 이해하고 실제 사용 예를 통해 연습하면 데이터베이스 작업의 생산성과 가독성을 높일 수 있습니다.

반응형