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行
有什么问题?
答案 0 :(得分:0)
将ELSE IF
更改为ELSEIF
,
答案 1 :(得分:0)
您有三个开放的if
语句,只有一个end if
。 else 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;
另外,仅供参考,正确的拼写可能是“分隔符”而不是“分隔符”。