Heim  >  Artikel  >  Datenbank  >  MySQL存储过程例子,不能在if else里面用begin end否则会报错Erro_MySQL

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

WBOY
WBOYOriginal
2016-06-01 13:32:451823Durchsuche

bitsCN.com

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

报错是因为mysql的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  

        BEGIN  

            /* 夜间赛场 */  

            SET i_starttime = '21:30';  

            SET i_endtime   = '22:30';  

        END  

    ELSE  

        BEGIN  

            /* 中午场 */  

            SET i_starttime = '12:30';  

            SET i_endtime   = '13:30';  

        END  

    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

    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

              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 ;  

 

bitsCN.com
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn