Siden DECLARE workval bigint(20);
linje er den første med semikolon i slutningen. Jeg formoder, at du har glemt at ændre afgrænsningstegnet, før du indtastede funktionskoden (selvom dette afhænger af den klient, du bruger).
Prøv at ændre din kode til:
DELIMITER #
CREATE FUNCTION nextval (seq_name varchar(100))
...
END#