[MSSQL] 커서(Cursor) 사용법
본문 바로가기
공부 (IT)/IT관련_DB

[MSSQL] 커서(Cursor) 사용법

by 달님’SS 2021. 6. 22.
728x90
반응형
SMALL

커서(CUrsor)사용법에 대해 알아보겠습니다. 

 

커서란?

Select한 결과를 행 단위로 반복 작업을 해야할 때 사용하는 방법으로, For문 또는 While 문 처럼 반복 수행이 가능합니다. 특정 테이블의 튜플들에 접근하여 하나씩 처리할 수 있는 기능을 가지고 있습니다. 

즉, select 한 데이터의 Row를 하나씩 가지고 와서 데이터를 처리하는 방식이라고 생각하면 되는데요,

주로 배치작업을 할 때 사용하며, 속도가 느리기 때문에 필요한 경우에만 사용하는 것이 좋습니다. 

 

단계 의미 설명
DECLARE 커서 선언 커서 정의(선언) 및 생성하는 명령문
 OPEN 커서 열기 SELECT한 결과의 첫번째 튜플을 가르키도록 설정하는 명령문
FETCH 커서 이동 [기존에 가르키던 SELECT한 결과의 튜플]의 다음 튜플을 가르키도록 설정하는 명령문 (1 -> 2, 2 -> 3, 3 -> 4.... )
CLOSE 커서 닫기 SELECT한 결과에 대한 처리 후 커서를 닫는 명령문
DEALLOCATE 커서 해제 커서를 닫은 후 할당된 메모리를 해제하는 명령문

 

 

[예제]

Cursor를 이용하여 emp_member 테이블의 age 컬럼 값에 +1씩 해보기

--------------------------------------------------------------------------------------

DECLARE @NAME varchar(50)

             

--커서 선언

DECLARE cur CURSOR FOR                            --cur 라는 이름의 커서를 선언하여, 

SELECT user_name FROM emp_member           --emp_member라는 테이블을 select한다.

 

--커서 오픈

OPEN cur                                                   

 

FETCH NEXT FROM cur INTO @NAME              --select했을 때의 이름값을 변수에 넣는다. 

 

--커서를 이용해서 한 Row씩 읽으면서 AGE에 +1을 계산한다. 

WHILE (@@FETCH_STATUS = 0) 

BEGIN

        UPDATE emp_member

        SET age = age + 1

        WHERE user_name = @NAME

 

        FETCH NEXT FROM cur INTO @NAME        --select한 행의 다음 행으로 넘어간다.

END

 

--커서 종료

CLOSE cur

DEALLOCATE cur

 

 

728x90
반응형

댓글


TOP