MySQL存储过程例子,不能在if else里面用begin end否则

页面导航:首页 > 数据库 > Mysql > MySQL存储过程例子,不能在if else里面用begin end否则

MySQL存储过程例子,不能在if else里面用begin end否则

来源: 作者: 时间:2016-02-20 09:26 【

MySQL存储过程例子,不能在if else里面用begin end否则会报错Error Code:1064解决Error Code : 1064You have an error in your SQL syntax; check the manual that corresponds to your MyS...
MySQL存储过程例子,不能在if else里面用begin end否则会报错Error Code:1064解决
 
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
报错是因为的procedure里面if else语句里面, 用了begin end语句,去掉了就OK了.
 
[sql] 
DELIMITER $$  
  
USE `sportgbmj`$$  
  
DROP PROCEDURE IF EXISTS `sp_web_addmiddayrank`$$  
  
CREATE DEFINER=`root`@`%` PROCEDURE `sp_web_addmiddayrank`()  
BEGIN  
        /*  
    修订记录:  
    -------------------------------------------------------------------  
    版本    修订人     修订日期      修订描述  
    -------------------------------------------------------------------  
    1.0.0            2013-06-15    查询当前中午12:30-13:30比赛排名  
                                     该sp 当前比赛结束后执行  
                                     排名先决条件:  
                                     1:在一场内必须完满10(含)局以上  
                                       
    -------------------------------------------------------------------   
    */  
    DECLARE i_date      DATE ;  
    DECLARE i_starttime TIME;  
    DECLARE i_endtime   TIME;  
      
    SET i_date    = NOW();  
    SET i_endtime = NOW();  
      
    IF (i_endtime > '22:30') THEN  
        <strong><span style="color:#ff0000;">BEGIN</span></strong>  
            /* 夜间赛场 */  
            SET i_starttime = '21:30';  
            SET i_endtime   = '22:30';  
        <strong><span style="color:#ff0000;">END</span></strong>  
    ELSE  
        <span style="color:#ff0000;"><strong>BEGIN</strong></span>  
            /* 中午场 */  
            SET i_starttime = '12:30';  
            SET i_endtime   = '13:30';  
        <span style="color:#ff0000;"><strong>END</strong></span>  
    END IF;  
  
      
    CREATE TEMPORARY TABLE tmp_rank(  
        id INT NOT NULL AUTO_INCREMENT -- 自增  
        ,userid INT                    -- 用户标识  
        ,beans INT                     -- bean 汇总  
        ,rounds TINYINT                -- 局数 汇总  
        ,posttime TIME                 -- 时间 (该玩家本场比赛最后的时间)  
    ) ENGINE = MYISAM;  
      
    INSERT INTO tmp_rank (userid,beans,rounds,posttime)  
    SELECT  
        userid          
        ,SUM(CASE WHEN consume > 0 THEN consume ELSE 0 END) beans  
        ,COUNT(userid) rounds  
        ,MAX(posttime) AS posttime  
    FROM   
        score AS S  
    INNER JOIN   
        scorelist AS SL  
    ON  
        S.pid = SL.pid      
    WHERE    
        roomid IN ('1001') AND (postdate = i_date AND posttime >='12:30:00' AND posttime <='13:30:00')  
    GROUP BY  
        userid  
    HAVING   
        (rounds >= 10)  
    ORDER BY   
        beans DESC   
        ,maxtime ASC  
    LIMIT 500;  
      
    /*   
      插入排名表  
    */  
    INSERT INTO   
        hf_playranklist (userid,rank,beans,rounds,postdate,posttime)   
    SELECT   
        userid,beans,rounds,i_date,posttime   
    FROM tmp_rank;  
      
    /*  
      插入奖品表  
    */  
    INSERT INTO hf_prizelist (userid,STATUS,prizeid,receivetime,postdate)  
    SELECT   
        userid  
        ,0  
        ,(CASE WHEN id >= 11 THEN 4  
              WHEN (id >= 3 AND id <= 10) THEN 3  
              WHEN id = 2 THEN 2  
              WHEN id = 1 THEN 1  
         END) AS prizeid  
        ,beans  
        ,rounds  
        ,posttime  
    FROM   
        tmp_rank AS R   
    WHERE   
        rank >= 30;  
    END$$  
  
DELIMITER ;  
 
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<