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
반응형
'DB, SQL' 카테고리의 다른 글
[MSSQL] Partition by 사용방법, 특정 열 기준에서 순위 표현 (0) | 2022.06.18 |
---|---|
[MariaDB] Windows에 MariaDB 설치하기 (0) | 2022.04.18 |
도커 컨테이너 MariaDB의 외부 접근 허용하기 (0) | 2021.10.16 |
[MariaDB] 데이터베이스 유저 정보 확인 명령어 (0) | 2021.10.15 |
[MariaDB] 댓글 처리 테이블 : 외래 키에 대해 테이블 다뤄보기 (0) | 2021.07.31 |