Karena DECLARE workval bigint(20);
baris pertama dengan titik koma di akhir, saya kira Anda lupa mengubah pembatas sebelum memasukkan kode fungsi (meskipun ini tergantung pada klien yang Anda gunakan).
Coba ubah kode Anda menjadi:
DELIMITER #
CREATE FUNCTION nextval (seq_name varchar(100))
...
END#