在教学数据库teaching中编写一个存储过程display _course,其功能是根据参数传入学号,利用游标机制,逐显示该学生所选修的每一门课程,要求显示学号、选修的课程名称和成绩。。
时间: 2024-02-27 11:54:07 浏览: 118
好的,下面是对应的存储过程代码:
```mysql
DELIMITER $$
CREATE PROCEDURE display_course(
IN sID INT
)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE cID INT;
DECLARE cName VARCHAR(255);
DECLARE score FLOAT;
DECLARE cur CURSOR FOR SELECT `courseID`, `courseName`, `score` FROM `teaching` WHERE `studentID` = sID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO cID, cName, score;
IF done THEN
LEAVE read_loop;
END IF;
SELECT CONCAT('Student ID: ', sID, ', Course ID: ', cID, ', Course Name: ', cName, ', Score: ', score) AS `Result`;
END LOOP;
CLOSE cur;
END$$
DELIMITER ;
```
这个存储过程可以通过传入学生的学号`sID`来逐一显示该学生所选修的每一门课程及其成绩。在存储过程中,我们使用了游标机制来遍历查询结果,并将其逐一输出。注意,这里使用了`CONCAT`函数来拼接输出字符串。
希望这个存储过程能够对你有所帮助!
阅读全文