Oracle
 sql >> Database >  >> RDS >> Oracle

Scrivi un'istruzione di inserimento con la clausola select che restituisce l'id in Oracle

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.