이전 글에 이어서 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 |