* MSSQL Cursor(커서) 란?

- 일반적으로 Sql 문 사용 시 결과에 대해서 집합(Table 형태)으로 반환을 합니다.

커서는 이러한 결과 집합을 한 행씩 처리 할 수 있도록 합니다.

 


1. Cursor(커서) 생성 하기


-- Cursor 생성 구문 --


DECLARE test_cursor [ INSENSITIVE ] [ SCROLL ] CURSOR FOR SELECT * FROM temptables

OPEN test_cursor

FETCH NEXT FROM test_cursor


CLOSE test_cursor

DEALLOCATE test_cursor



- 위의 SQL 문을 한줄 씩 살펴 보겠습니다.

+ DECLARE test_cursor CURSOR FOR SELECT * FROM temptables

-> DECLARE 으로 CURSOR 을 선언하는 부분 입니다.

여기서 FOR 구문 뒤에 CURSOR 에 삽입 시켜줄 SELECT 구문을 적용하면 됩니다.


+ OPEN test_cursor

-> 생성된 test_cursor 을 사용하기 위해 OPEN 을 시켜줍니다.

OPEN 은 SELECT 결과 집합을 채우는 역할을 합니다.

* 커서는 사용전에 OPEN 을 해주어야 합니다!


+ FETCH NEXT FROM test_cursor

-> 커서 의 값을 한줄 씩 읽어 옵니다.

FETCH 는 CURSOR 가 가지고 있는 결과 집합에서 행을 반환 합니다.

+ CLOSE test_cursor

-> OPEN 된 커서를 닫아 줍니다.

* 커서와 연결 된 결과 집합을 해제 합니다.


+ DEALLOCATE test_cursor

-> 커서가 제거 됩니다. ( 커서 에서 사용된 리소스를 해제합니다. )



쉽게 말하면,

CURSOR FOR 'QUERY' [커서 생성] -> OPEN [커서 사용준비] -> FETCH [커서 사용]

-> CLOSE [커서 사용해제] -> DEALLOCATE [커서 삭제] 를 해주시면 됩니다.



2. Cursor(커서) 주요 명령문 및 Cursor(커서) 관리 Stored Procedure


-- 커서 명령문 --


- FETCH NEXT

: 현재 행 바로 다음의 결과 행을 반환합니다.

커서에 대해 FETCH NEXT가 첫 번째 인출인 경우에는 결과 집합의 첫 번째 행을 반환합니다.


- FETCH PRIOR

: 현재 행 바로 앞의 결과 행을 반환합니다.

커서에 대해 FETCH PRIOR가 첫 번째 인출인 경우에는 행이 반환되지 않으며 커서는 첫 번째 행 앞에 위치하게 됩니다.


- FETCH FIRST

: 커서의 첫 번째 행을 반환합니다.


- FETCH LAST

: 커서의 마지막 행을 반환합니다.



-- 커서 관리 Stored Procedure --


- sp_cursor_list

: 커서 목록과 그 특성을 반환합니다.


- sp_describe_cursor

: 정방향, 스크롤 커서 등의 커서 특성을 설명합니다.


- sp_describe_cursor_columns

: 결과 집합에서 열의 특성을 설명합니다.


- sp_describe_cursor_tables

: 액세스되는 기본 테이블을 설명합니다.



출처: http://infodbbase.tistory.com/34 [Sharing programming information.]

'개발 > DB' 카테고리의 다른 글

ms msql where절 if문 쓰기  (0) 2017.10.30
[MS-SQL] mssql 소수점 연산 방법  (0) 2017.09.11
[MS SQL] mssql loop 반복문  (0) 2017.09.07
oracle 날짜 포맷  (0) 2017.08.30
MS-SQL 날짜형식 SELECT  (0) 2017.08.29

+ Recent posts