Eftersom DECLARE workval bigint(20);
raden är den första med semikolon i slutet, jag misstänker att du glömde att ändra avgränsaren innan du matade in funktionskoden (även om detta beror på klienten du använder).
Prova att ändra din kod till:
DELIMITER #
CREATE FUNCTION nextval (seq_name varchar(100))
...
END#