-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 構文にエラーがあります。'SELECT seq_currval INTO result
from id_generator
WHERE seq_name = deimeter; 'SELECT seq_currval INTO result from id_generator;
R' 9 行目

何が問題ですか?

4

2 に答える 2

0

どこまでも変えELSE IFて、ELSEIF

于 2013-09-04T01:26:51.320 に答える
0

オープンifステートメントは 3 つあり、 は 1 つだけ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;

また、参考までに、適切なスペルはおそらく「delimiter」ではなく「delimiter」です。

于 2013-09-04T01:27:14.243 に答える