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, но я получаю следующее сообщение об ошибке:Ошибка синтаксиса для функции MySQL
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 'SELECT seq_currval INTO result
from id_generator
WHERE seq_name = delimeter;
R' at line 9
В чем проблема?
** Проблема № 1: ** Никакой демонстрации каких-либо проблем. ** Проблема № 2: ** Не удосужился использовать форматирование кода при задании вопроса. ** Проблема № 3: ** Не прочитал страницу * help * для введения в StackOverflow. ** Проблема № 4: ** Это действительно MySQL или какой-либо другой SQL, который вы пытаетесь скопировать-вставить в качестве запроса MySQL? ** Проблема № 5: ** Вы понимаете, что пытается выполнить запрос? Чего вы пытаетесь достичь (в частности, КАК вы пытаетесь достичь этого, помните, что люди взимают почасовые ставки за кодирование, поэтому не делайте это хором/работой). ** Мой ответ: ** Синтаксическая ошибка. – BLaZuRE
попробуйте это? http://stackoverflow.com/questions/3888735/mysql-set-user-variable-from-result-of-query – Jianhong
Возможно, вам просто не хватает полуколонки после END IF ... и поэтому mysql не делает понять следующий оператор (SELECT seq _...) –