Poiché DECLARE workval bigint(20);
linea è la prima con un punto e virgola alla fine, sospetto che tu abbia dimenticato di cambiare il delimitatore prima di inserire il codice della funzione (anche se questo dipende dal client che stai utilizzando).
Prova a cambiare il codice in:
DELIMITER #
CREATE FUNCTION nextval (seq_name varchar(100))
...
END#