DB, SQL

[MSSQL] 커서(Cursor) 간단한 예제로 알아보기 - 실습

isaac.kim 2021. 12. 30. 12:47
728x90
반응형

[MSSQL] 커서(Cursor) 간단한 예제로 알아보기 - 실습

 

커서는 간단하게 말하면 데이터 집합에 대해서 한 행씩 작업을 하는 것이라고 볼 수 있습니다.

커서는 보통 update 작업에 사용합니다.

 

커서 관련 명령어

DECLARE : 선언
OPEN : 커서의 포인터가 질의 결과의 첫 번째 튜플을 가리키도록 설정

FETCH : 커서의 포인터가 현재의 다음 튜플을 가리키도록 설정

CLOSE : 커서 닫기

 

예제

다음과 같이 테스트할 테이블을 준비합니다. 해당 테이블의 age 값을 커서를 사용해 +3 씩 증가시키는 예제입니다.

 

SQL

select * from 가_test
--insert into 가_test values ('홍길동', 22)
--insert into 가_test values ('고길동', 26)
--insert into 가_test values ('김길동', 36)

DECLARE
@INDEX INT,
@NAME VARCHAR(100),
@AGE INT

SET @INDEX = 0; 

DECLARE CUR CURSOR FOR -- CUR 라는 이름의 커서 선언

select * from 가_test -- 쿼리 조회 NAME, AGE

OPEN CUR -- 커서 오픈
FETCH NEXT FROM CUR INTO @NAME, @AGE -- SELECT한 값을 @NAME, @AGE 변수에 넣는다.

-- 커서를 이용해 한 행씩 읽음
WHILE @@FETCH_STATUS = 0
BEGIN
	SET @INDEX = @INDEX + 1; -- INDEX 증가

	-- UPDATE
	UPDATE 가_test
	SET AGE = @AGE + 3 -- 나이 + 3
	WHERE NAME = @NAME

	FETCH NEXT FROM CUR INTO @NAME, @AGE -- 다음행 이동
END

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

 

실행 결과

행에 접근한 수 만큼 @INDEX 변수에도 값이 증가 했음을 알 수 있습니다.

 

728x90
반응형