MS-SQL 프로시저 커서(CURSOR) 사용 법 에 대하여 알아봅시다
연말정산 계산 로직이나 연차 계산을 위해서 프로시저 커서(cursor) 를 사용하기도 합니다
개발 중 자주 사용되지는 않지만, 한번씩 사용되는 커서에 대하여 알아 보도록 합니다
단순히 조회 된 내용을 PRINT 명령어를 사용하여 메시지로 출력되게 하였습니다
실행하면 다음과 같은 결과 메시지를 볼 수 있습니다
DECLARE cur CURSOR
FOR
/****** 대상 조회 시작**********/
SELECT '1' COL1, 'A' COL2
UNION
SELECT '2' COL1, 'B' COL2
/****** 대상 조회 끝************/
OPEN cur
DECLARE @COL1 VARCHAR(10)
DECLARE @COL2 VARCHAR(10)
--첫 로우 FETCH
FETCH NEXT FROM cur INTO @COL1, @COL2
--Fetch문이 정상 실행(0), 실패 또는 범위에서 벗어남(-1), 인출된 행이 없음(-2)
--Fetch문이 정상 실행(0) 일 경우 계속 실행
WHILE @@FETCH_STATUS = 0
BEGIN
/****** 실행 로직 시작**********/
PRINT '[WHILE문 내부] @@FETCH_STATUS = '+ CONVERT(VARCHAR(10),@@FETCH_STATUS) + ', COL1 = ' + @COL1 + ', COL2 = ' + @COL2
/****** 실행 로직 끝************/
--다음 로우 FETCH
FETCH NEXT FROM cur INTO @COL1, @COL2
END
PRINT '[WHILE문 종료 후] @@FETCH_STATUS = '+ CONVERT(VARCHAR(10),@@FETCH_STATUS)
--커서 CLOSE
CLOSE cur
--커서 DEALLOCATE
DEALLOCATE cur
이상 커서에 대하여 알아보았습니다
'프로그래밍 > DB' 카테고리의 다른 글
[MS-SQL] 특정 월의 마지막 날짜 구하는 두가지 방법 (0) | 2017.09.07 |
---|---|
[MS-SQL] 정규식을 이용한 특수문자 포함 된 데이터 조회 방법 (0) | 2017.09.07 |
[MS-SQL] 컬럼명이 포함 된 테이블 찾는 방법 (0) | 2017.09.01 |
[MS-SQL] 세로 데이터 가로로 한 컬럼에 담기 - FOR XML PATH (0) | 2017.08.29 |
[MS-SQL] 순서 매기기 - ROW_NUMBER() OVER (0) | 2017.08.29 |