Det vil ikke virke. RETURNING
klausul kan ikke bruges som du gør det, dvs.
insert into t (id, my_pk)
select some_id, your_function from ...
returning into v_output
men ville fungere, hvis du indsatte VALUES
, som
insert into t
values (id, your_function)
returning my_pk into v_output
Det betyder, at du enten bliver nødt til at omskrive den kode eller se på en løsning beskrevet i retur med insert..select artikel (skrevet af Adrian Billington).
BTW, ville en almindelig Oracle-sekvens ikke passe til dit formål? Vil ikke være hulfri, men ville være enkel og effektiv. Vær opmærksom på ydeevnen, når du indsætter enorme mængder data ved hjælp af din løsning.
BTW #2, hvad er formålet med den sidste linje i din funktion? Du bruger aldrig N_VALUE.