본문 바로가기
Programming/MSSQL

MSSQL 커서 CURSOR 사용 방법

by DKOFI 2018. 8. 31.
728x90

본문에 나와있는 쿼리 한꺼번에 실행할 것.

--***********************************임시 테이블 생성***********************************

CREATE TABLE #TEMP(

   ROW_NUM INT,

   NAME  VARCHAR(100),

                   SUBJECT   VARCHAR(100),

   SCORE NUMERIC(10,2) 

  )


INSERT INTO #TEMP(NAME, SUBJECT, SCORE) VALUES ( '윤동구', '국어', 60)

INSERT INTO #TEMP(NAME, SUBJECT, SCORE) VALUES ( '윤동구', '영어', 100)

INSERT INTO #TEMP(NAME, SUBJECT, SCORE) VALUES ( '윤동구', '수학', 80)

--***********************************임시 테이블 생성***********************************






--커서에 담을 변수 선언

DECLARE 

@ROW_NUM INT,     --점수 순위

@NAME VARCHAR(100), 

@SUBJECT VARCHAR(100),

@SCORE NUMERIC(10,2)


SET @ROW_NUM = 0  -- 순위 0으로 세팅

--이름이 DONG_CURSOR인 커서 선언

DECLARE DONG_CURSOR CURSOR FOR


--커서 사용할 테이블(한줄씩 읽을 ROW 데이터)

SELECT NAME,

       SUBJECT,

   SCORE

  FROM #TEMP

  ORDER BY SCORE DESC  







    --***************************** 커서 시작 *****************************

--커서 오픈

OPEN DONG_CURSOR 

FETCH NEXT FROM DONG_CURSOR INTO @NAME,

                                 @SUBJECT,

@SCORE

--에러체크

WHILE @@FETCH_STATUS = 0 --0이 기본



BEGIN 

     SET @ROW_NUM = @ROW_NUM +1;

 

--커서에서 한줄씩 읽은 ROW에 할 작업

UPDATE #TEMP

    SET ROW_NUM = @ROW_NUM

   WHERE SUBJECT = @SUBJECT

         --커서에서 한줄씩 읽은 ROW에 할 작업


--다음 ROW로 이동

FETCH NEXT FROM DONG_CURSOR INTO @NAME,

@SUBJECT,

@SCORE

END


CLOSE DONG_CURSOR

DEALLOCATE DONG_CURSOR

--***************************** 커서 종료 *****************************





--***************************** 결과 값 조회 *****************************

SELECT ROW_NUM,

       NAME,

       SUBJECT,

   SCORE

  FROM #TEMP

  ORDER BY ROW_NUM

    --***************************** 결과 값 조회 *****************************




    DROP TABLE #TEMP 







    

300x250

'Programming > MSSQL' 카테고리의 다른 글

MSSQL 쿼리 호환 *=  (0) 2018.09.03
MSSQL IF문 사용 방법  (0) 2018.08.31
MSSQL 트랜젝션 TRAN 쿼리확인 KILL  (0) 2018.08.29
MSSQL에서 락이 걸렸을때 DK  (0) 2018.07.24

댓글