Я забыл поставить директиву delimiter, несколько точек с запятой и использовал синтаксис tsl, например [select variable = field], который недопустим в mysql.
Ошибка Mysql при использовании синтаксиса tsl [не разрешается возвращать набор результатов изфункция] и не очень помогают.
@AndreKR все это указывает на меня, спасибо.
Я использую mysqlworkbench 5.2.30 CE.Рабочие функции становятся:
delimiter //
CREATE FUNCTION nextval (seq_name varchar(100))
RETURNS bigint(20)
READS SQL DATA
NOT DETERMINISTIC
BEGIN
DECLARE workval bigint(20);
SELECT count(1) into workval
FROM tip_sequence
WHERE sequencename = seq_name;
IF workval <> 1 THEN
DELETE
FROM tip_sequence
WHERE sequencename = seq_name;
INSERT
INTO tip_sequence (sequencename, sequenceval, sequencestep)
VALUES (seq_name, 1, 1);
END IF;
SELECT sequenceval into workval
FROM tip_sequence
WHERE sequencename = seq_name;
UPDATE tip_sequence
SET sequenceval = sequenceval + sequencestep
WHERE sequencename = seq_name;
RETURN workval;
END//
delimiter ;