MySQL中创建带INOUT参数的存储过程计算学生总成绩
创建获取学生总成绩的存储过程
需求说明
需要实现一个带单个INOUT参数的存储过程:传入学生学号后,该参数会被赋值为对应学生的总成绩(由quiz和exam成绩相加得到)。
存储过程代码
DELIMITER // CREATE PROCEDURE GetStudentTotalScore(INOUT p_stu_no INT) BEGIN -- 通过传入的学号查询总成绩,并将结果赋值给INOUT参数 SELECT quiz + exam INTO p_stu_no FROM course WHERE stu_no = p_stu_no; END // DELIMITER ;
调用示例
-- 定义变量,初始值为目标学生学号,后续用来接收总成绩 SET @target_stu = 1127; -- 调用存储过程 CALL GetStudentTotalScore(@target_stu); -- 查看最终结果(此时@target_stu的值已更新为该学生的总成绩) SELECT @target_stu AS total_score;
补充说明
- 总成绩计算逻辑采用
quiz + exam,如果后续表中新增其他成绩字段,可调整为SUM(quiz + exam + ...)这类符合需求的求和逻辑。 - 若传入的学号不存在,INOUT参数会被赋值为
NULL,可根据实际需求添加判断逻辑处理该场景。
内容的提问来源于stack exchange,提问作者Connor Whitaker
相关产品推荐
相关产品推荐

