Protože DECLARE workval bigint(20);
řádek je první se středníkem na konci, mám podezření, že jste zapomněli změnit oddělovač před zadáním kódu funkce (i když to závisí na klientovi, kterého používáte).
Zkuste změnit svůj kód na:
DELIMITER #
CREATE FUNCTION nextval (seq_name varchar(100))
...
END#