[CURSOR ]커서 사용하기
기본적인 구조
--커서네임 CUR_CHECK_MEMBER
--커서로 추가할 라인 검색
DECLARE CUR_CHECK_MEMBER CURSOR FOR
SELECT * FROM FRIENDS_EVENT
OPEN CUR_CHECK_MEMBER
FETCH NEXT FROM CUR_CHECK_MEMBER
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'FETCH LOOP'
FETCH NEXT FROM CUR_CHECK_MEMBER --요거 안해주면 무한루프 ㅋㅋ
END
CLOSE CUR_CHECK_MEMBER
DEALLOCATE CUR_CHECK_MEMBER
커서마다 idx(필드네임) 값 가져오기
DECLARE @IDX INT <--- 가져오 필드네임
DECLARE CUR_CHECK_MEMBER CURSOR FOR
SELECT IDX FROM FRIENDS_EVENT
OPEN CUR_CHECK_MEMBER
FETCH NEXT FROM CUR_CHECK_MEMBER INTO @IDX
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @IDX
FETCH NEXT FROM CUR_CHECK_MEMBER INTO @IDX
END
CLOSE CUR_CHECK_MEMBER
DEALLOCATE CUR_CHECK_MEMBER
커서가 뭐냐면...
회원정보를 하나 하나 가져와서
분석하고 처리해야하는데... 이거는 ASP 레코드셋처럼
한행 단위로 처리할수있다 ㅎㅎㅎㅎㅎ
편하다.....~
--커서선언부분
DECLARE cur_konan_Test CURSOR
FOR
SELECT idx , member_id FROM member_payment --커서에 담을 테이블 선택
--커서 오픈
OPEN cur_konan_Test
--변수 선언
DECLARE @idx int
DECLARE @member_id varchar(50)
FETCH NEXT FROM cur_konan_Test INTO @idx, @member_id --이게 레코드셋이라 생각하믄됨
* 참고 하셈-----------------------------------------------------------------------------
while @@FETCH_STATUS =0 으로 돌고있음
한마디로 말해서 에러가 없을때 까지 돌아란 말.... ㅎㅎㅎ 쉽따
0 FETCH 문은 성공적이었습니다.
-1 FETCH 문은 실패했거나 행이 결과 집합의 범위를 벗어났습니다.
-2 반입된 행이 없습니다.
----------------------------------------------------------------------------------------
WHILE @@FETCH_STATUS = 0
BEGIN
print @idx
print @member_id
FETCH NEXT FROM cur_konan_Test INTO @idx, @member_id --다음 커서로 이동~
END
--커서 CLOSE
CLOSE cur_konan_Test
--커서 DEALLOCATE
DEALLOCATE cur_konan_Test