sql >> Databasteknik >  >> RDS >> Oracle

Skriv en insert-sats med select-sats som returnerar id i oracle

Det kommer inte att fungera. RETURNING klausul kan inte användas som du gör det, d.v.s.

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

men skulle fungera om du infogade VALUES , som

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

Det betyder att du antingen måste skriva om den koden eller titta på en lösning beskrivs i återvända med insert..select artikel (skriven av Adrian Billington).

BTW, skulle inte en vanlig Oracle-sekvens passa ditt syfte? Kommer inte att vara gapfritt, men skulle vara enkelt och effektivt. Tänk på prestandan när du infogar stora mängder data med din lösning.

BTW #2, vad är syftet med den sista raden i din funktion? Du använder aldrig N_VALUE.



  1. Hur får man en lista kolumnnamn och datatyper för en tabell i PostgreSQL?

  2. Oracle SQL - DENSE_RANK

  3. nytt kortvarigt certifikat löper ut för tidigt:aktuell tid:M

  4. Hur REPEAT() fungerar i MariaDB