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
'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 |