mysql 错误码: 1064

ktyu10 2013-04-21 11:42:49
在down公司的mysql一个数据库的时候一直提示这个问题,搞了好几天没有解决。。。
求助各路大神

Query:
/*!50003 CREATE DEFINER=`root`@`%` PROCEDURE `GetNextSequence`(IN P_SeqName VARCHAR(64) ,OUT SeqId BIGINT)
BEGIN
DECLARE R_MINVALUE BIGINT;
DECLARE R_MAXVALUE BIGINT;
DECLARE R_STARTWITH BIGINT;
DECLARE R_CYCLE BIT;
DECLARE R_CURRENT_DAY DATETIME;
DECLARE R_CYCLE_IN_DAY BIT;
DECLARE R_NewSeq BIGINT;
SELECT CURRENTVALUE + INCREMENT,CURRENT_DAY,CYCLE_IN_DAY,CYCLE,MINVALUE,MAXVALUE,STARTWITH INTO R_NewSeq,R_CURRENT_DAY,R_CYCLE_IN_DAY,R_CYCLE,R_MINVALUE,R_MAXVALUE,R_STARTWITH FROM SERP_SEQUENCE_T WHERE SEQNAME=P_SeqName;
#当天内循环
IF R_CYCLE_IN_DAY=1 THEN
#隔天
IF DATEDIFF(R_CURRENT_DAY,CURRENT_DATE()) > 0 THEN
SET SeqId = R_STARTWITH;
ELSE
SET SeqId = R_NewSeq;
END IF;
#当天
ELSE
#正常
IF R_NewSeq > R_MAXVALUE THEN
IF R_CYCLE=1 THEN
SET SeqId = R_STARTWITH;
ELSE
SET SeqId = -1;
END IF;
ELSE
SET SeqId = R_NewSeq;
END IF;
END IF;
#更新
UPDATE SERP_SEQUENCE_T SET CURRENTVALUE=SeqId,CURRENT_DAY=CURRENT_DATE() WHERE SEQNAME=P_SeqName;
END */

Error occured at:2013-04-21 23:28:46
Line no.:804
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 'MAXVALUE,STARTWITH INTO R_NewSeq,R_CURRENT_DAY,R_CYCLE_IN_DAY,R_CYCLE,R_MINVALUE' at line 10
...全文
182 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ktyu10 2013-04-22
  • 打赏
  • 举报
回复
求助各路大神啊
wwwwb 2013-04-22
  • 打赏
  • 举报
回复
DELIMITER $$ CREATE PROCEDURE `GetNextSequence`(IN P_SeqName VARCHAR(64) ,OUT SeqId BIGINT) BEGIN DECLARE R_MINVALUE BIGINT; DECLARE R_MAXVALUE BIGINT; DECLARE R_STARTWITH BIGINT; DECLARE R_CYCLE BIT; DECLARE R_CURRENT_DAY DATETIME; DECLARE R_CYCLE_IN_DAY BIT; DECLARE R_NewSeq BIGINT; SELECT CURRENTVALUE+INCREMENT,CURRENT_DAY,CYCLE_IN_DAY,CYCLE,`MINVALUE`,`MAXVALUE`,STARTWITH INTO R_NewSeq,R_CURRENT_DAY,R_CYCLE_IN_DAY,R_CYCLE,R_MINVALUE,R_MAXVALUE,R_STARTWITH FROM SERP_SEQUENCE_T WHERE SEQNAME=P_SeqName; #当天内循环 IF R_CYCLE_IN_DAY=1 THEN #隔天 IF DATEDIFF(R_CURRENT_DAY,CURRENT_DATE()) > 0 THEN SET SeqId = R_STARTWITH; ELSE SET SeqId = R_NewSeq; END IF; #当天 ELSE #正常 IF R_NewSeq > R_MAXVALUE THEN IF R_CYCLE=1 THEN SET SeqId = R_STARTWITH; ELSE SET SeqId = -1; END IF; ELSE SET SeqId = R_NewSeq; END IF; END IF; #更新 UPDATE SERP_SEQUENCE_T SET CURRENTVALUE=SeqId,CURRENT_DAY=CURRENT_DATE() WHERE SEQNAME=P_SeqName; END $$ DELIMITER ;
ktyu10 2013-04-22
  • 打赏
  • 举报
回复
引用 2 楼 wwwwb 的回复:
DELIMITER $$ CREATE PROCEDURE `GetNextSequence`(IN P_SeqName VARCHAR(64) ,OUT SeqId BIGINT) BEGIN DECLARE R_MINVALUE BIGINT; DECLARE R_MAXVALUE BIGINT; DECLARE R_STARTWITH BIGIN……
还有,想请问下为什么不能在不同的数据库中建立同名的存储过程?这个可以解决么?服务器上的存储过程都是重名的。。。
ktyu10 2013-04-22
  • 打赏
  • 举报
回复
引用 2 楼 wwwwb 的回复:
DELIMITER $$ CREATE PROCEDURE `GetNextSequence`(IN P_SeqName VARCHAR(64) ,OUT SeqId BIGINT) BEGIN DECLARE R_MINVALUE BIGINT; DECLARE R_MAXVALUE BIGINT; DECLARE R_STARTWITH BIGIN……
可以了,十分感谢,请问下为什么maxvalue和minvalue两处为什么要加引号才可以呢?

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧