sql >> Base de Datos >  >> RDS >> Oracle

Escriba una declaración de inserción con la cláusula de selección que devuelve la identificación en Oracle

Eso no funcionará. RETURNING la cláusula no se puede usar de la forma en que lo está haciendo, es decir,

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

pero funcionaría si insertara VALUES , como

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

Significa que tendrá que volver a escribir ese código o buscar una solución alternativa descrito en returning with insert..select artículo (escrito por Adrian Billington).

Por cierto, ¿una secuencia ordinaria de Oracle no se adaptaría a su propósito? No será sin espacios, pero sería simple y efectivo. Tenga en cuenta el rendimiento al insertar una gran cantidad de datos, utilizando su solución.

Por cierto #2, ¿cuál es el propósito de la última línea en tu función? Nunca usas N_VALUE.