DB, SQL

[MSSQL] 커서(Cursor) 사용법 및 예제

isaac.kim 2023. 1. 2. 20:30
728x90
반응형

[MSSQL] 커서(Cursor) 사용법 및 예제

쉽게 얘기하는 것을 좋아한다.

 

오늘은 MSSQL에서 커서에 대해서 알아보자.

 

커서(Cursor)는 '포인터' + '반복문'의 개념이라고 볼 수 있다.

 

커서는 어떤 테이블이나 결괏값에 대해서 첫 행부터 마지막 행까지 한 행 씩 가리키면서 작업할 수 있게 도와주는 스킬이다.

EXAMPLE 테이블

위의 테이블(혹은 결괏값)이 있을 때, 위 전체 대상에 대해서 나이(Age)를 2살 더해보자.

 

※ UPDATE문 한 줄로 간단하게 처리할 수 있다는 것을 알지만 사용법을 익히기 위해서는 가능한 쉬운 예제를 사용해 이해를 돕고자 했다.

 

커서 사용법, 예제

-- 커서 아래에서 조회한 값들을 담을 변수를 선언
DECLARE @NAME VARCHAR(20), @AGE SMALLINT

DECLARE CUR CURSOR FOR -- CUR라는 이름의 커서를 선언한다.

SELECT NAME, AGE FROM EXAMPLE -- 테이블 조회

OPEN CUR -- 커서 오픈
FETCH NEXT FROM CUR INTO @NAME, @AGE -- SELECT한 첫 행의 결괏값을 @NAME, @AGE 변수에 담는다.

-- 조회한 테이블(결괏값)을 한 행(ROW)씩 읽는다.
WHILE @@FETCH_STATUS = 0 -- 상태확인 TRUE면 반복해서 실행한다.
BEGIN
	UPDATE EXAMPLE 
	SET AGE = @AGE + 2 -- 나이 2살 더하기
	WHERE NAME = @NAME

	-- SELECT한 결괏값에서 다음 행의 값을 @NAME, @AGE 변수에 담는다.
	FETCH NEXT FROM CUR INTO @NAME, @AGE
END

-- 커서 닫고 초기화
CLOSE CUR
DEALLOCATE CUR

 

결괏값

 

728x90
반응형