创建存储过程
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>