[MSSQL] 커서 (CURSOR)

SQL 2014. 7. 23. 16:55

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
-- 성적 테이블 생성
CREATE TABLE 성적(
                    번호 TINYINT,
                    이름 CHAR(8),
                    국어 TINYINT,
                    영어 TINYINT,
                    수학 TINYINT
)
 
 
-- 성적 테이블 데이터 입력
INSERT INTO 성적( 번호, 이름, 국어, 영어, 수학 ) VALUES ( 1, '홍길동', 79, 80, 80 )
INSERT INTO 성적( 번호, 이름, 국어, 영어, 수학 ) VALUES ( 2, '임꺽정', 79, 85, 80 )
INSERT INTO 성적( 번호, 이름, 국어, 영어, 수학 ) VALUES ( 3, '박찬호', 70, 80, 80 )
 
 
-- 총점, 평균 컬럼 추가
ALTER TABLE 성적 ADD 총점 SMALLINT
ALTER TABLE 성적 ADD 평균 TINYINT
 
 
-- 총점, 평균 값 지정
UPDATE 성적
SET 총점 = 국어 + 영어 + 수학,
    평균 = 총점 / 3
 
 
-- 등급 컬럼 추가
ALTER TABLE 성적 ADD 등급 TINYINT
 
 
 
-- 커서 이용 등급처리
DECLARE 등급처리 CURSOR
FOR SELECT 번호, 총점 FROM 성적
 
OPEN 등급처리
 
DECLARE @NUMB TINYINT, @SUM SMALLINT
 
FETCH NEXT FROM 등급처리 INTO @NUMB, @SUM
 
WHILE @@FETCH_STATUS = 0
BEGIN
    UPDATE 성적
    SET 등급 = 1 + ( SELECT COUNT(*) FROM 성적 WHERE 총점 > @SUM )
    WHERE 번호 = @NUMB
    
    FETCH NEXT FROM 등급처리 INTO @NUMB, @SUM
END
 
CLOSE 등급처리
DEALLOCATE 등급처리
 
[출처] MSSQL - 커서|작성자 nonoll


Posted by 요지
,