mysql创建存储过程 mybatis调用


创建存储过程

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>










猜你喜欢

转载自blog.csdn.net/shashago/article/details/80661050