본문 바로가기

Programming

[MSSQL] Cursor 사용법

안녕하세요 마푸입니다. 


사실 MySQL을 다룰 때는 Cursor를 참 많이 작성했습니다. 

그도 그럴것이 대부분의 업무가 Python을 이용한 Script로 DB를 제어하는 것이 였습니다. 

(당시에는 Procedure의 효율성 때문에 Addhoc을 사용했기 때문이지요..)


그러다보니 RcodeSet을 가져와서 Cursor로 일일이 데이터를 매칭시켜주거나 분류하는 작업이 주작업이 였습니다. 


헌데 MSSQL을 하면서 Cursor라는 녀석을 거의 써본적이 없습니다. 


물런, Cursor을 사용해야되는 경우가 있긴있습니다. 

예를들면 결과집합의 데이터가 다시 모집단으로 포함이 되어야하는 경우이지요... 


이런경우는 그냥 Cross Apply를 사용하면 되기 때문에 고비용의 Cursor를 쓸 일이 점점 없어지는 것 같습니다. 


하.지.만


예전 시스템에는 역시 존재하는 아재스러운 데이터 처리 방식이기 때문에 우리는 알아야 겠지요?


멍때리기크흐..


그럼 2011년 3월 17일날 작성한 포스트를 살펴보도록 하겠습니다. 




아~ 요즘 하고 있는 일이있는데 말이죠~

전 왠지 계속 멍청해 지고 있다는걸 세삼 깨닫고 있습니다. ㅋ;;

 

이번 플젝하면서 필요했던 것들을 갈무리 해볼까합니다. ㅋ;;

 

===============================================================

 

-- cursor 선언 및 데이터 읽어오기

DECLARE val_cursor CURSOR FAST_FORWARD

FOR

SELECT col1, col2 FROM TABLE_NAME WHERE coln = 'mssql'

 

-- cursor open

OPEN val_cursor

 

-- 변수 등록

DECLARE @A char(10)

DECLARE @B char(10)

 

-- 변수에 데이터 담기

FETCH NEXT FROM val_cursor INTO @A, @B

 

-- Loop 수행

WHILE @@FETCH_STATUS = 0

BEGIN

INSERT INTO.....

FETCH NEXT FROM val_cursor INTO @A, @B

END

 

-- cursor close

 

CLOSE val_cursor

DEALLOCATE val_cursor

 

=========

 

크크... 개인적인 생각이지만 C던 VB, Python, MSSQL 등 모든 프로그래밍 구문이 통일되었으면 좋겟다능 ;;




반응형