MySQL 存储过程例子,不能在if else里面用begin end否则会报错Error Code : 1064!
2013-06-17 13:43
567 查看
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了.
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了.
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 <='13:30:00') GROUP BY userid H***ING (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 ;
相关文章推荐
- MySQL 存储过程例子,不能在if else里面用begin end否则会报错Error Code : 1064!
- 这是oracle包实体里面的一个存储过程 oracle存储过程中的if...elseif...else用法
- 创建存储过程错误(已解决):Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server ver
- mysql存储过程中if...else常见用法
- mysql进阶:存储过程中的IF语句(IF THEN ELSEIF THEN ELSE END IF)
- mysql存储过程的参数名不能和表字段名一样,否则不执行条件
- MySQL存储过程例子,包含事务,输出参数,嵌套调用
- mysql中触发器和存储过程的if-else中的子句不能为空
- 如何在MySQL的存储过程中实现把过程参数用在游标定义的SELECT命令里面作为表名引用
- MySQL带参数的存储过程小例子
- mysql 存储过程1064问题和事例
- MySQL存储过程中的错误处理 以及mybatis调用存储过程的例子
- [MySQL] 存储过程错误异常处理例子 --> DECLARE EXIT HANDLER FOR SQLEXCEPTION
- mysql 一个带游标的存储过程例子
- 用命令行导出mysql库里面所有的存储过程以及存储函数
- MySQL带参数的存储过程小例子
- MySQL带参数的存储过程小例子
- SQL IF..ELSE..在存储过程的使用规范
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等