MS-SQL SQL Server

MSSQL Cursor 사용법

깨노비 2020. 3. 9. 17:46
728x90
반응형

DECLARE 커서이름 CURSOR FOR -- 커서 선언해서

     커서에 가져올 실행문 -- 커서에 가져올 실행문 실행

OPEN 커서이름

 

     FETCH NEXT FROM 커서이름 -- 처음에 커서가 0번 을 가리키고 있어서 1번행 가르키도록 다음것을 가져옴

     INTO 실행문에서 가져온 변수 -- 커서 실행문에서 사용할 변수 가져오기

 

     WHILE @@FETCH_STATUS=0 BEGIN -- FETCH문이 정상적으로 실행될동안 while문으로 돌림

 

          처리할 실행문(insert or update) -- 반복될동안 처리될 실행문

 

          FETCH NEXT FROM 커서이름 -- 커서 다음것 가져옴

          INTO 실행문에서 가져온 변수

 

     END -- 반복문의 마지막

 

CLOSE 커서이름 -- 커서 닫기

DEALLOCATE 커서이름 -- 커서 할당 해제

 

 

@@FETCH_STATUS

0 -> FETCH문이 정상적으로 실행 되었을 경우

1 -> FETCH문이 실패하거나 범위에서 벗어났을 경우

2 -> 인출된 행이 없을 경우

 

 

ex)

 

DECLARE msg_date CURSOR FOR

SELECT emp_no , emp_name

FROM #temp_msg

GROUP BY emp_no, emp_name

ORDER BY emp_no DESC

OPEN msg_date

FETCH NEXT FROM msg_date

INTO @emp_no, @emp_name

 

WHILE @@FETCH_STATUS=0 BEGIN

 

update #temp_msg set msg = @msg_cnt where emp_no = @emp_no

 

FETCH NEXT FROM msg_date

INTO @emp_no, @emp_name

END

CLOSE msg_date

DEALLOCATE msg_date

 

728x90
반응형

'MS-SQL SQL Server' 카테고리의 다른 글

MSSQL 날짜 변환 함수(형태 변환)  (0) 2020.03.10
MSSQL 트랜잭션  (0) 2020.03.09
MSSQL 재귀호출 사용법  (0) 2020.03.09
MSSQL 특정문자가 포함된 프로시저 찾기  (0) 2020.03.09
MSSQL 피벗 예시  (0) 2020.03.09