SQL 작업을 하다보면 조회된 쿼리 결과에 대해서 행 단위 작업이 필요할때가 있다. 이때, Cursor를 사용하면 효율적으로 처리 할 수 있다.
Cursor Command
- DECLARE: Cursor에 관련된 선언을 하는 명령
- OPEN: Cursor가 Query결과의 첫번째 Tuple을 포인트로 하도록 설정하는 명령
- FETCH: Query 결과의 Tuple들 중 현재의 다음 Tuple로 커서를 이동시키는 명령
- CLOSE: Query 수행을 모두 마친 후 Cursor를 닫기 위한 명령
- DEALLOCATE: Close된 Cursor의 자원을 반환하는 명령
Cursor life cycle

Cursor Example
DECLARE @pColum_1 NVARCHAR(100), @pColum_2 INT, @pColum_3 BIT
DEClARE pCursor CURSOR
FOR
select * from [Target Table]
OPEN pCursor
FETCH NEXT FROM pCursor INTO @pColum_1, @pColum_2, @pColum_3
WHILE(@@FETCH_STATUS <> -1)
BEGIN
update [Target Table] SET Colum = @Colum_1 + 1
where Colum_2 = @pColum_2 and Colum_3 = @pColum_3
FETCH NEXT FROM pCursor INTO @pColum_1, @pColum_2, @pColum_3
END
CLOSE pCursor
DEALLOCATE pCursor
-유의사항-
Cursor를 사용하게 되면 내부적인 임시테이블을 사용하기 때문에 많이 사용하게 되면 DB성능에 영향을 미치게 된다. 되도록 사용량이 적은 시간때이거나 적은양의 데이터를 처리할 때 사용하는 것이 바람직 하다.