90 likes | 293 Views
뇌를 자극하는 SQL Server 2005. 12 장 . 커서. 커서의 개요. 개요 행의 집합을 다루는 데 제공해주는 편리한 기능 SQL Server 의 성능을 느리게 하는 요인이 될 수 있으므로 , 특별한 경우가 아니라면 되도록 사용하지 않을 것을 권장함 파일처리시의 파일 포인터와 비슷한 작동을 함. 커서의 처리 순서 (1). 커서의 선언 DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ]
E N D
뇌를 자극하는 SQL Server 2005 12장. 커서
커서의 개요 • 개요 • 행의 집합을 다루는 데 제공해주는 편리한 기능 • SQL Server의 성능을 느리게 하는 요인이 될 수 있으므로, 특별한 경우가 아니라면되도록 사용하지 않을 것을 권장함 • 파일처리시의 파일 포인터와 비슷한 작동을 함.
커서의 처리 순서 (1) • 커서의 선언 DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [ ,...n ] ] ]
커서의 처리 순서(2) • 커서 열기 OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name } • 데이터 가져오기 및 처리 FETCH [ [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE { n | @nvar } | RELATIVE { n | @nvar } ] FROM ] { { [ GLOBAL ] cursor_name } | @cursor_variable_name } [ INTO @variable_name [ ,...n ] ] • 커서 닫기 CLOSE { { [ GLOBAL ] cursor_name } | cursor_variable_name } • 커서 할당 해제 DEALLOCATE { { [ GLOBAL ] cursor_name } | @cursor_variable_name }
실습 목표 • 커서를 선언하고 사용하는 기본적인 방법을 익힌다. • 사용된 SQL문 예 DECLARE userTbl_cursor CURSOR GLOBAL … OPEN userTbl_cursor; … FETCH NEXT FROM userTbl_cursor INTO @height WHILE @@FETCH_STATUS = 0 BEGIN … FETCH NEXT FROM userTbl_cursor INTO @height CLOSE userTbl_cursor; DEALLOCATE userTbl_cursor; <실습1> 커서의 기본 이용
커서와 일반적인 쿼리의 성능 비교 • 실습 목표 • 커서와 집합함수를 사용한 쿼리의 성능을 비교해서, 왜 커서가 성능이 좋지 않은지 확인해 본다. <실습2> 커서와 일반쿼리의 성능 비교
커서의 내부 동작방식 (1) • GLOBAL, LOCAL • 커서가 생존해 있는 범주를 결정해 줌 • LOCAL (지역 커서) • 커서가 살아있는 범위가 커서가 선언된 부분에 국한됨 • GLOBAL (전역 커서) • 모든 프로시저 등에서 커서의 이름을 참조할 수 있음 • 실습 목표 • GLOBAL 커서와 , LOCAL 커서의 디폴트 설정 방법 및 생존 영역을 확인해 본다. <실습3> GLOBAL, LOCAL 설정
커서의 내부 동작방식 (2) • STATIC / DYNAMIC / KEYSET • 커서의 선언시에 원본데이터를 TEMPDB로 가져오는 방식
실습 목표 • 앞 슬라이드의 그림과 같이 STATIC, DYNAMIC, KEYSET 에 따라서 커서가 작동하는 방식을 이해한다. • 실습 목표 • 커서의 선언시에 커서가 이동하는 방식을 학습한다. • 커서의 암시적 변환에 대해서 익힌다. • 커서의 암시적 변환시에 메시지가 나오도록 설정해 보자. <실습4> 커서의 형태(model) <실습5> 커서의 이동 및 암시적 커서 변환