创建存储过程
drop procedure IF EXISTS computeScore;
create procedure computeScore(
p_matchId VARCHAR(30), -- 赛事ID
p_homeValue VARCHAR(30), -- 主队得分
p_visiteValue VARCHAR(30)) -- 客队得分
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a INT;
DECLARE score INT DEFAULT 0;
DECLARE cur1 CURSOR FOR select matchId,homeValue,visiteValue from ball_match where matchId=p_matchId;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 INTO m,h,v;
if NOT done THEN
if h==p_homeValue and v==p_visiteValue then
set score = score+3;
end if;
update ball_match set score = score where mathchId = m;
end if;
UNTIL done END REPEAT;
CLOSE cur1;
END ;
mybaits 调用存储过程
<update id="computeScore" statementType="CALLABLE" parameterType="EnterResult"> <![CDATA[ {call computeScore ( #{matchId,mode=IN,jdbcType=INTEGER}, #{homeValue,mode=IN,jdbcType=INTEGER} } ]]> </update>
本文介绍了一个使用MySQL创建的存储过程,该过程用于根据输入的比赛ID及双方队伍得分来更新比赛记录表中的得分情况。通过定义游标遍历比赛记录,并判断是否符合输入得分条件来实现得分计算。
849

被折叠的 条评论
为什么被折叠?



