Da DECLARE workval bigint(20);
Zeile die erste mit einem Semikolon am Ende ist, vermute ich, dass Sie vergessen haben, das Trennzeichen vor der Eingabe des Funktionscodes zu ändern (obwohl dies von dem Client abhängt, den Sie verwenden).
Versuchen Sie, Ihren Code zu ändern:
DELIMITER #
CREATE FUNCTION nextval (seq_name varchar(100))
...
END#