Non funzionerà. RETURNING
la clausola non può essere utilizzata nel modo in cui lo stai facendo, ad esempio
insert into t (id, my_pk)
select some_id, your_function from ...
returning into v_output
ma funzionerebbe se inserisci VALUES
, come
insert into t
values (id, your_function)
returning my_pk into v_output
Significa che dovrai riscrivere quel codice o cercare una soluzione alternativa descritto in ritorno con insert..select articolo (scritto da Adrian Billington).
A proposito, una normale sequenza Oracle non sarebbe adatta al tuo scopo? Non sarà senza interruzioni, ma sarebbe semplice ed efficace. Presta attenzione alle prestazioni quando inserisci enormi quantità di dati, utilizzando la tua soluzione.
A proposito n. 2, qual è lo scopo dell'ultima riga nella tua funzione? Non usi mai N_VALUE.