Das wird nicht funktionieren. RETURNING
-Klausel kann nicht so verwendet werden, wie Sie es tun, dh
insert into t (id, my_pk)
select some_id, your_function from ...
returning into v_output
würde aber funktionieren, wenn Sie VALUES
einfügen , als
insert into t
values (id, your_function)
returning my_pk into v_output
Das bedeutet, dass Sie entweder diesen Code neu schreiben oder nach einer Problemumgehung suchen müssen beschrieben in Rückkehr mit insert..select Artikel (geschrieben von Adrian Billington).
Übrigens, würde eine gewöhnliche Oracle-Sequenz nicht zu Ihrem Zweck passen? Wird nicht lückenlos sein, wäre aber einfach und effektiv. Beachten Sie die Leistung beim Einfügen großer Datenmengen mit Ihrer Lösung.
BTW Nr. 2, was ist der Zweck der letzten Zeile in Ihrer Funktion? Sie verwenden niemals N_VALUE.