Oracle
 sql >> Base de données >  >> RDS >> Oracle

Écrire une instruction d'insertion avec la clause select renvoyant l'id dans oracle

Cela ne fonctionnera pas. RETURNING la clause ne peut pas être utilisée comme vous le faites, c'est-à-dire

insert into t (id, my_pk)
select some_id, your_function from ...
returning into v_output

mais cela fonctionnerait si vous insériez VALUES , comme

insert into t
values (id, your_function)
returning my_pk into v_output

Cela signifie que vous devrez soit réécrire ce code, soit rechercher une solution de contournement décrit dans retour avec insert..select article (écrit par Adrian Billington).

BTW, une séquence Oracle ordinaire ne conviendrait-elle pas à votre objectif ? Ne sera pas sans lacunes, mais serait simple et efficace. Faites attention aux performances lors de l'insertion d'une énorme quantité de données, en utilisant votre solution.

BTW #2, à quoi sert la dernière ligne de votre fonction ? Vous n'utilisez jamais N_VALUE.