创建存储过程p_case(),通过参数传递sid,cid,返回该课程成绩等级:优秀|良好|中等|及格|不及格。
时间: 2023-08-12 10:17:12 浏览: 39
好的,以下是 MySQL 存储过程 `p_case()` 的实现代码:
```mysql
CREATE PROCEDURE p_case (IN sid INT, IN cid INT, OUT grade VARCHAR(10))
BEGIN
DECLARE score INT;
-- 查询该学生该课程的成绩
SELECT score INTO score FROM score WHERE sid = sid AND cid = cid;
-- 根据成绩计算等级
CASE
WHEN score >= 90 THEN SET grade = '优秀';
WHEN score >= 80 AND score < 90 THEN SET grade = '良好';
WHEN score >= 70 AND score < 80 THEN SET grade = '中等';
WHEN score >= 60 AND score < 70 THEN SET grade = '及格';
ELSE SET grade = '不及格';
END CASE;
END;
```
该存储过程包含两个输入参数 `sid` 和 `cid`,一个输出参数 `grade`。在存储过程中,我们首先查询该学生该课程的成绩,并根据成绩计算等级,最后将等级赋值给输出参数 `grade`。
相关问题
创建存储过程p_getbysno,根据指定的课程名得到学生的选课人数和及格人数,并调用存储过程:
好的,以下是创建存储过程p_getbysno的SQL语句:
```
CREATE PROCEDURE p_getbysno
@sno VARCHAR(20)
AS
BEGIN
SELECT
COUNT(*) AS total_num,
SUM(CASE WHEN score >= 60 THEN 1 ELSE 0 END) AS pass_num
FROM
SC
INNER JOIN
Course
ON SC.cno = Course.cno
WHERE
Course.cname = @sno;
END
```
这个存储过程的作用是:根据指定的课程名得到选该课程的学生人数和及格人数。
如果要调用该存储过程,可以使用以下SQL语句:
```
EXEC p_getbysno '计算机基础';
```
其中,'计算机基础'是要查询的课程名,可以根据需要修改。执行该语句后,就可以得到选修该课程的学生人数和及格人数。
编程:利用选择句型输出成绩的五个等级:优秀,良好,中等,及格和不及格。 利用多分支if-elseif-else语句或者switch语句
可以使用多分支if-elseif-else语句来实现输出成绩的五个等级。例如:
```
if(score >= 90) {
printf("优秀");
} else if(score >= 80) {
printf("良好");
} else if(score >= 70) {
printf("中等");
} else if(score >= 60) {
printf("及格");
} else {
printf("不及格");
}
```
也可以使用switch语句来实现,代码如下:
```
switch(score / 10) {
case 10:
case 9:
printf("优秀");
break;
case 8:
printf("良好");
break;
case 7:
printf("中等");
break;
case 6:
printf("及格");
break;
default:
printf("不及格");
break;
}
```