반응형
데이터베이스 작업을 할 때, 종종 특정 쿼리 결과를 순회하며 작업을 수행해야 합니다. 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;
이 구조의 장점은 다음과 같습니다:
- 간결성: 명시적인 커서 선언, OPEN, FETCH, CLOSE 등의 작업 없이 직관적인 방식으로 데이터를 순회합니다.
- 자동 관리: 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 작업에서 효율적인 데이터 처리를 위한 필수 도구입니다. 기본 문법을 이해하고 실제 사용 예를 통해 연습하면 데이터베이스 작업의 생산성과 가독성을 높일 수 있습니다.
반응형
'프로그래밍 > 기타' 카테고리의 다른 글
[SQL] 기초: SELECT, UPDATE, DELETE, WHERE 살펴보기 (0) | 2023.06.13 |
---|---|
[Error] The JSON value could not be converted to System.String (0) | 2022.08.29 |
[ORACLE] 날짜 비교 (0) | 2022.07.05 |
[기타] Visual Studio 콘솔창 유지 닫기 방지 (0) | 2022.07.01 |
[Python] Code Folding, region 사용법 (0) | 2022.06.28 |