MySQL函数的语法错误

时间:2013-09-04 01:10:55

标签: mysql sql function

DELIMITER $$

CREATE FUNCTION ecmsbackoffice.getSequence($delimeter VARCHAR(20)) RETURNS VARCHAR(20)
BEGIN
DECLARE result VARCHAR(20);
SET result = 0;

IF (delimeter='B') THEN UPDATE id_generator SET seq_currval=(seq_currval+1) WHERE seq_name='B';
ELSE IF (delimeter='D') THEN UPDATE id_generator SET seq_currval=(seq_currval+1) WHERE seq_name='D';
ELSE IF (delimeter='C') THEN UPDATE id_generator SET seq_currval=(seq_currval+1) WHERE seq_name='C';
END IF

SELECT seq_currval INTO result 
FROM id_generator 
WHERE seq_name = delimeter;

RETURN result;
END $$

DELIMITER ;

我试图创建一个MySQL函数,但是我收到以下错误:

  

错误代码:1064
  您的SQL语法有错误;查看与您的MySQL>服务器版本对应的手册,以便使用“seq_currval INTO结果”附近的正确语法   来自id_generator
  在哪里seq_name = delimeter;
  R'在第9行

有什么问题?

2 个答案:

答案 0 :(得分:0)

ELSE IF更改为ELSEIF

答案 1 :(得分:0)

您有三个开放的if语句,只有一个end ifelse ifelseif之间存在差异(请注意空格)。试试这个:

IF (delimeter='B') THEN UPDATE id_generator SET seq_currval=(seq_currval+1) WHERE seq_name='B';
ELSEIF (delimeter='D') THEN UPDATE id_generator SET seq_currval=(seq_currval+1) WHERE seq_name='D';
ELSEIF (delimeter='C') THEN UPDATE id_generator SET seq_currval=(seq_currval+1) WHERE seq_name='C';
END IF;

另外,仅供参考,正确的拼写可能是“分隔符”而不是“分隔符”。

相关问题