采用前面实验所创建的数据库S_C及其上所建立的STUDENT、COURSE和SC表和数据(必要时可补充数据),根据如下要求,编写程序并运行和查看结果。 1、创建并运行一个存储过程,要求实现如下功能:输入学生学号,根据该学生所选课程的平均成绩显示提示信息,即如果平均成绩在 60 分以上,显示“成绩合格,成绩为 xx 分”,否则显示“成绩不合格,成绩为 xx 分” 。给我两种方法
时间: 2023-06-14 16:06:46 浏览: 103
数据库实验题 包你满意
方法一:
首先创建一个存储过程,输入学生学号,计算该学生所选课程的平均成绩,并根据平均成绩输出提示信息。
```
DELIMITER $$
CREATE PROCEDURE show_score(IN stuid CHAR(10))
BEGIN
DECLARE avg_score FLOAT;
SELECT AVG(SC.score) INTO avg_score FROM SC WHERE SC.stuid=stuid;
IF avg_score>=60 THEN
SELECT CONCAT('成绩合格,成绩为 ', FORMAT(avg_score,2), ' 分') AS result;
ELSE
SELECT CONCAT('成绩不合格,成绩为 ', FORMAT(avg_score,2), ' 分') AS result;
END IF;
END$$
DELIMITER ;
```
然后调用该存储过程,输入学生学号,即可输出提示信息。
```
CALL show_score('1001');
```
方法二:
创建一个函数,输入学生学号,返回该学生所选课程的平均成绩。
```
DELIMITER $$
CREATE FUNCTION get_avg_score(stuid CHAR(10)) RETURNS FLOAT
BEGIN
DECLARE avg_score FLOAT;
SELECT AVG(SC.score) INTO avg_score FROM SC WHERE SC.stuid=stuid;
RETURN avg_score;
END$$
DELIMITER ;
```
然后调用该函数,输入学生学号,获得平均成绩,并根据平均成绩输出提示信息。
```
SET @avg_score = get_avg_score('1001');
IF @avg_score>=60 THEN
SELECT CONCAT('成绩合格,成绩为 ', FORMAT(@avg_score,2), ' 分') AS result;
ELSE
SELECT CONCAT('成绩不合格,成绩为 ', FORMAT(@avg_score,2), ' 分') AS result;
END IF;
```
阅读全文