mysql if begin end_MySQL存储过程例子,不能在if else里面用begin end否则会报错Erro_MySQL...
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 <='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 ;
bitsCN.com
相關標簽:
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的mysql if begin end_MySQL存储过程例子,不能在if else里面用begin end否则会报错Erro_MySQL...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 定时脚本_MySQL定时执行
- 下一篇: centos 6.5 rpm mysql