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
| USE myschool; #请在此处添加实现代码 ########## BEGIN ########## DELIMITER $ CREATE PROCEDURE proc_numgrade(IN sumtemp CHAR(9)) BEGIN DECLARE a INT; DECLARE b INT default 0; DECLARE c cursor for SELECT Grade FROM Course,SC WHERE Cname = sumtemp AND Course.Cno = SC.Cno; DECLARE contINue handler for not found SET b = 1; CREATE temporary table TMEP_TABLE( Type CHAR(30), Num INT ); INSERT INTO TMEP_TABLE VALUES('100', 0); INSERT INTO TMEP_TABLE VALUES('[90,100)', 0); INSERT INTO TMEP_TABLE VALUES('[80,90)', 0); INSERT INTO TMEP_TABLE VALUES('[70,80)', 0); INSERT INTO TMEP_TABLE VALUES('[60,70)', 0); INSERT INTO TMEP_TABLE VALUES('[0,60)', 0); OPEN c; WHILE b != 1 do FETCH c INTO a; IF b != 1 THEN IF a=100 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='100'; ELSEIF a>=90 AND a<100 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[90,100)'; ELSEIF a>=80 AND a<90 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[80,90)'; ELSEIF a>=70 AND a<80 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[70,80)'; ELSEIF a>=60 AND a<70 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[60,70)'; ELSEIF a>=0 AND a<60 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[0,60)'; END IF; END IF; END WHILE; CLOSE c; SELECT * FROM TMEP_TABLE; END;$ DELIMITER ; ########## END ########## # 以下代码禁止删除 CALL PROC_NUMGRADE('离散数学');
|