请写一个存储过程用于查询学生成绩。其中,学生、课程、成绩数据分别存储在student、course、sc表,见课本P327实验三。要求依据学生姓名和课程名称进行查询。若未检索到记录,打印“未检索到(**学生名)选修(**课程名)课程的记录。”;否则打印“(**学生名)选修(**课程名)课程的成绩是(具体成绩)分。
时间: 2023-07-24 17:28:17 浏览: 78
好的,以下是存储过程的代码:
```mysql
DELIMITER //
CREATE PROCEDURE query_score(IN stu_name VARCHAR(20), IN course_name VARCHAR(20))
BEGIN
DECLARE stu_id INT;
DECLARE course_id INT;
DECLARE score INT;
DECLARE msg VARCHAR(100);
SELECT id INTO stu_id FROM student WHERE name = stu_name;
SELECT id INTO course_id FROM course WHERE name = course_name;
IF stu_id IS NULL OR course_id IS NULL THEN
SET msg = CONCAT('未检索到(', stu_name, ')选修(', course_name, ')课程的记录。');
SELECT msg;
ELSE
SELECT sc.score INTO score FROM sc WHERE sc.sid = stu_id AND sc.cid = course_id;
IF score IS NULL THEN
SET msg = CONCAT('未检索到(', stu_name, ')选修(', course_name, ')课程的记录。');
SELECT msg;
ELSE
SET msg = CONCAT('(', stu_name, ')选修(', course_name, ')课程的成绩是(', score, ')分。');
SELECT msg;
END IF;
END IF;
END //
DELIMITER ;
```
该存储过程接受两个参数:学生姓名和课程名称。首先根据学生姓名和课程名称分别查询出对应的学生编号和课程编号,然后在sc表中查找对应的成绩。如果查找到了成绩,则返回该学生选修该课程的成绩;否则返回未检索到记录的提示信息。
阅读全文