Dado que DECLARE workval bigint(20);
line es la primera con un punto y coma al final, sospecho que olvidó cambiar el delimitador antes de ingresar el código de función (aunque esto depende del cliente que esté usando).
Intenta cambiar tu código a:
DELIMITER #
CREATE FUNCTION nextval (seq_name varchar(100))
...
END#