-2
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 >server 版本相对应的手册,以获取在 'SELECT seq_currval INTO result
from id_generator
WHERE seq_name = demeter;附近使用的正确语法
第 9 行的 R'

问题是什么?

4

2 回答 2

0

到处换ELSE IFELSEIF

于 2013-09-04T01:26:51.320 回答
0

您有三个未决if语句,只有一个end ifelse if和之间有区别elseif(注意空格)。尝试这个:

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;

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

于 2013-09-04T01:27:14.243 回答