[데이터 베이스] Cursor 란?

목차

🔎 Cursor 란?

커서는 쿼리 결과셋을 탐색할 수 있는 포인터 입니다. DB 는 쿼리 결과 데이터를 반환할 때, 커서(cursor) 를 생성하여 현재 어디까지 데이터가 반환됐는지, 어디부터 읽으면 될지를 알 수 있습니다.

주로 프로그램 내에서 루프를 돌며 한 줄씩 데이터를 처리할 필요가 있을 때 사용합니다.

✅ Cursor 사용법

1. DECLARE - Cursor 선언 및 생성

커서를 사용하고 싶은 쿼리가 있으면 아래 SQL 을 이용해 커서를 정의 및 생성해줍니다.

DECLARE cursor_name CURSOR FOR
SELECT id, name FROM users;

2. OPEN - Cursor 열기

생성된 커서를 사용하기 위애 열어줍니다. 이때, 커서를 사용하기 위한 SQL 문이 실행돼 결과 데이터가 메모리에 올라가고 커서는 데이터의 첫번째 행을 가르키게 됩니다.

OPEN cursor_name;

3. Fetch - 데이터 가져오기

커서를 한행씩 이동시키면서 기르키고 있던 값을 변수에 저장합니다.

FETCH NEXT FROM cursor_name INTO @id, @name;

조회된 전체데이터를 읽을때까지 루프를 돌면서 데이터를 가져옵니다.

WHILE @@FETCH_STATUS = 0
BEGIN
-- 각 행에 대해 처리
PRINT @id;

FETCH NEXT FROM cursor_name INTO @id, @name;
END

4. CLOSE - 커서 닫기

사용이 끝난 커서를 닫아줍니다. 커서가 닫히면서 바라보고 있던 테이블과의 관계도 끊기돼 더 이상 커서를 사용할 수 없습니다.

CLOSE cursor_name;

5. DEALLOCATE - 커서와 관련된 리소스 해제

커서를 사용하기 위해 점유하고 있던 리소스들을 모두 해제해 줍니다. 이때 메모리에 올라간 결과 데이터도 내려오게 됩니다.

DEALLOCATE cursor_name;
Share