loading

프로그래밍/MS-SQL

CURSOR 실습 - (3)

침착곰 2016. 4. 13. 15:39
반응형

이전 글에 이어서 CURSOR를 응용해서 실습한 내용입니다.

CURSOR를 사용해서 이런식으로 데이터들을 표현할 수가 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DECLARE @APP_DATE NVARCHAR(8), @SIGN_TYPE NVARCHAR(10)
DECLARE test_cursor CURSOR FOR SELECT APP_DATE, SIGN_TYPE
FROM #KimTable
OPEN test_cursor
FETCH NEXT FROM test_cursor INTO @APP_DATE, @SIGN_TYPE
PRINT '----- CURSOR 시작-----'
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT ' APP_DATE || SIGN_TYPE'
PRINT ' [' + @APP_DATE + '] || [ ' + @SIGN_TYPE + ' ]'
FETCH NEXT FROM test_cursor INTO @APP_DATE, @SIGN_TYPE
END
PRINT '----- CURSOR 끝-----'
CLOSEtest_cursor
DEALLOCATEtest_cursor
cs

--> 결과값이 이렇게 출력됩니다.


-- Query문 분석(위의 Query문을 분석한 내용입니다.)

+ DECLARE @APP_DATE NVARCHAR(8), @SIGN_TYPE NVARCHAR(10)

--> 커서에서 반환하는 APP_DATE, SIGN_TYPE을 저장할 변수를 생성합니다.

+ DECLARE test_cursor CURSOR FOR SELECT APP_DATE, SIGN_TYPE

FROM #KimTable

--> 커서 생성 및 커서에 대입할 SELECT 구문을 작성합니다.

+ OPEN test_cursor

--> 커서 사용 준비를 합니다.

+ FETCH NEXT FROM test_cursor INTO @APP_DATE, @SIGN_TYPE

--> 커서에서 첫 번째 행 값을 읽어 변수에 대입합니다.

+ WHILE @@FETCH_STATUS = 0

--> @@FETCH_STATUS는 FETCH문의 실행 상태를 반환합니다.

(0 : 수행, -1 : 실패, -2 : 행 없음)

즉 FETCH NEXT문이 성공적으로 수행되면 WHILE문이 수행되며, 실패 또는 커서의 행을 모두 반환하여 행이 없을 경우 WHILE문이 종료됩니다.

+ PRINT '[' + @APP_DATE + '] || [' + @SIGN_TYPE + ']'

--> 변수에 저장된 값을 PRINT함수를 이용하여 출력합니다.

+ FETCH NEXT FROM test_cursor INTO @APP_DATE, @SIGN_TYPE

--> 커서에서 다음행을 불러와 변수에 대입합니다.

+ CLOSE test_cursor

--> OPEN된 커서를 닫습니다.

+ DEALLOCATE test_cursor

--> 커서에 할당된 리소스를 제거합니다.


이상으로 CURSOR에 대해서 알아봤습니다.

나중에 시간이 된다면 제가 실제로 사용한 CURSOR문을 토대로 CURSOR에 대해서 더 깊이 알아보겠습니다.


참고 : http://infodbbase.tistory.com/34

반응형
그리드형

'프로그래밍 > MS-SQL' 카테고리의 다른 글

SQL문 실습 - CONVERT  (0) 2016.04.15
SQL문 실습 - Date Function(2)  (0) 2016.04.15
CURSOR 실습 - (2)  (0) 2016.04.13
CURSOR란? - (1)  (0) 2016.04.13
Temp Table이란?  (0) 2016.04.13