在MySQL中有一张学生成绩表,其中有cno(课程号),sno(学号),examgrade(考试成绩)三个属性,怎么创建一个存储过程将学生考试成绩从百分制改成等级制(A:>=90,B:>=80,C:>=70,D:>=60,E:<60)
时间: 2024-12-12 17:17:37 浏览: 18
MySQL45道练习题-删掉了成绩表主键.docx
在MySQL中,你可以通过创建一个存储过程来实现这个功能。以下是一个简单的步骤来创建这样一个存储过程:
首先,你需要创建一个名为`convert_grades`的存储过程,其基本结构如下:
```sql
DELIMITER //
CREATE PROCEDURE convert_grades(IN cno INT, IN sno INT, IN examgrade DECIMAL(4,2))
BEGIN
DECLARE new_grade CHAR(1);
IF examgrade >= 90 THEN
SET new_grade = 'A';
ELSEIF examgrade >= 80 THEN
SET new_grade = 'B';
ELSEIF examgrade >= 70 THEN
SET new_grade = 'C';
ELSEIF examgrade >= 60 THEN
SET new_grade = 'D';
ELSE
SET new_grade = 'E'; -- 如果分数小于60,则设为E等级
END IF;
UPDATE your_table_name SET grade = new_grade WHERE cno = cno AND sno = sno;
END //
DELIMITER ;
```
这里假设你的表名为`your_table_name`,你需要替换为你实际的表名。此存储过程接受课程号(cno),学号(sno)和原始考试成绩(examgrade)作为输入,然后根据给定条件计算新的等级,并更新到相应的记录。
阅读全文