본문에 나와있는 쿼리 한꺼번에 실행할 것.
--***********************************임시 테이블 생성***********************************
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
'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 |
댓글