Ciao, questa l'ho trovata su internet (non ricordo dove) e l'ho modificata per le mie necessità. Alla fine ritorna il valore calcolato. Credo che funzioni, perchè se la eseguo da SQL-Front tramite:
select nextval(seq_name) as newid;
funziona tutto come previsto.
codice:
--create nexval stored procedure
CREATE FUNCTION nextval(seq_name varchar(100))
RETURNS bigint(20) NOT DETERMINISTIC
BEGIN
DECLARE cur_val bigint(20);
SELECT
f_current_value INTO cur_val
FROM
t_sequence
WHERE
f_sequence_name = seq_name;
IF cur_val IS NOT NULL THEN
UPDATE
T_SEQUENCE
SET
f_current_value = IF(
(f_current_value + f_increment) > f_end_value, IF(f_cycle = true, f_start_value , null), f_current_value + f_increment
)
WHERE
f_sequence_name = seq_name;
END IF;
RETURN cur_val;
END;