Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Schreiben Sie eine Einfügeanweisung mit Auswahlklausel, die ID in Oracle zurückgibt

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.