반응형
Ant_U
DBA 개미
Ant_U
전체 방문자
오늘
어제
  • 분류 전체보기 (262) N
    • AWS (3)
    • C# (1)
    • SQL (236) N
      • MYSQL (186) N
      • MSSQL (50)
    • 자격증 (20)
      • SQLD (12)
      • SQLP (8)

인기 글

최근 글

250x250
hELLO · Designed By 정상우.
Ant_U

DBA 개미

[MySQL] Cursor  CLOSE 문 사용 방법 및 예시
SQL/MYSQL

[MySQL] Cursor CLOSE 문 사용 방법 및 예시

2024. 12. 29. 12:00
728x90
반응형



소개  
MySQL에서 Cursor는 결과 집합(Row)을 한 행씩 처리할 수 있게 해주는 유용한 도구입니다. 그러나 Cursor를 사용한 후에는 명시적으로 닫아주는 것이 필수적입니다. 이를 위해 사용되는 명령문이 바로 CLOSE Statement입니다. Cursor를 CLOSE하지 않으면 시스템 자원을 낭비할 수 있습니다. 이 글에서는 Cursor를 닫는 방법인 CLOSE Statement의 역할과 사용 예제를 다룹니다.



주요 특징  

- Cursor 연결 해제:  
  CLOSE는 이전에 DECLARE로 정의된 Cursor를 명시적으로 닫아줍니다.  
- 필수 구문:  
  Cursor는 사용 후 반드시 닫아야 합니다. 닫지 않으면 자원을 계속 할당한 상태로 남겨두게 됩니다.  
- 한 번만 실행 가능:  
  Cursor를 닫은 후 다시 사용하는 것은 불가능합니다. 필요하면 새로 Cursor를 선언해야 합니다.  



사용 예시  

Cursor를 열고 데이터를 처리한 후, 자원을 해제하기 위해 CLOSE를 사용하는 간단한 예제를 보겠습니다.

예시 코드:

DELIMITER //

CREATE PROCEDURE ProcessCustomers()
BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE customerName VARCHAR(100);

    -- Cursor 선언
    DECLARE customerCursor CURSOR FOR
    SELECT name FROM customers;

    -- 핸들러 선언
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    -- Cursor 열기
    OPEN customerCursor;

    read_loop: LOOP
        FETCH customerCursor INTO customerName;

        -- 데이터가 없으면 루프 종료
        IF done = 1 THEN
            LEAVE read_loop;
        END IF;

        -- 작업 수행 (예: 고객 이름 출력)
        SELECT customerName;
    END LOOP;

    -- Cursor 닫기
    CLOSE customerCursor;
END//

DELIMITER ;


실행 순서 설명:
1. Cursor 선언:
   - customerCursor라는 이름의 Cursor를 선언해 customers 테이블의 name 컬럼에서 데이터를 가져옵니다.
2. Cursor 열기 (OPEN):
   - Cursor를 열어 결과 집합을 준비합니다.
3. 반복문 내 데이터 처리:
   - FETCH 명령문으로 Cursor에서 한 행씩 데이터를 가져옵니다.
   - 가져온 데이터를 변수 customerName에 저장하고 출력합니다.
   - 더 이상 데이터가 없으면 핸들러에 의해 done 플래그가 설정되고 루프를 종료합니다.
4. Cursor 닫기 (CLOSE):
   - 루프가 끝나면 CLOSE를 호출해 Cursor를 닫습니다.  

실행 결과:  
만약 customers 테이블에 세 명의 고객 데이터가 있다고 가정하면, 실행 시 다음과 같은 출력이 표시됩니다:

+-+
| customerName   |
+-+
| Alice          |
| Bob            |
| Charlie        |
+-+





장단점 분석  

장점:
- 효율적인 자원 관리:  
  Cursor를 닫으면 시스템 자원을 해제하여 성능 문제를 방지할 수 있습니다.  
- 명확한 종료 처리:  
  CLOSE 명령문 덕분에 Cursor의 라이프사이클을 명확하게 관리할 수 있습니다.

단점:
- 반드시 명시적 호출 필요:  
  Cursor를 사용한 후 CLOSE를 호출하지 않을 경우 실행 환경에 문제가 발생할 수 있습니다.  
- 사용 후 재활용 불가:  
  닫힌 Cursor는 다시 열 수 없으며, 필요 시 반드시 새로 선언해야 합니다.



결론  

MySQL에서 Cursor를 닫기 위한 CLOSE Statement는 안정적이고 효율적인 데이터베이스 관리에 필수적입니다. 데이터 반복 작업을 수행한 뒤 자원을 반드시 해제하여 시스템 성능에 불필요한 부담을 주지 않도록 해야 합니다. Cursor를 사용할 때는 항상 CLOSE 명령문을 통해 책임감 있게 자원 관리를 실천하세요.



참고 자료  
- [MySQL 공식 문서 - Cursor Statements](https://dev.mysql.com/doc/refman/8.0/en/cursors.html)

728x90
반응형

'SQL > MYSQL' 카테고리의 다른 글

[MySQL] 서버 사이드 커서 문 사용 방법 및 예시  (0) 2025.01.04
[MySQL] Cursor Open 문 사용 방법 및 예시  (1) 2025.01.03
[MySQL] Cursor FETCH 문 사용 방법 및 예시  (0) 2024.12.31
[MySQL] Cursor DECLARE 문 사용 방법 및 예시시  (0) 2024.12.30
[MySQL] WHILE 문 사용 방법 및 예시  (1) 2024.12.28
[MySQL] RETURN 문 사용 방법 및 예시  (0) 2024.12.27
[MySQL] REPEAT 문 사용 방법 및 예시  (0) 2024.12.27
[MySQL] LOOP 문 사용 방법 및 예시  (0) 2024.12.26
    'SQL/MYSQL' 카테고리의 다른 글
    • [MySQL] Cursor FETCH 문 사용 방법 및 예시
    • [MySQL] Cursor DECLARE 문 사용 방법 및 예시시
    • [MySQL] WHILE 문 사용 방법 및 예시
    • [MySQL] RETURN 문 사용 방법 및 예시
    Ant_U
    Ant_U

    티스토리툴바