Тъй като DECLARE workval bigint(20);
ред е първият с точка и запетая в края, подозирам, че сте забравили да промените разделителя, преди да въведете функционалния код (макар че това зависи от клиента, който използвате).
Опитайте да промените кода си на:
DELIMITER #
CREATE FUNCTION nextval (seq_name varchar(100))
...
END#