Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Napisz instrukcję INSERT z klauzulą ​​select zwracającą identyfikator w oracle

To nie zadziała. RETURNING klauzula nie może być użyta w taki sposób, w jaki to robisz, tj.

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

ale zadziała, jeśli wstawisz VALUES , jak

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

Oznacza to, że będziesz musiał albo przepisać ten kod, albo spojrzeć na obejście opisane w powrót z insertem..select artykuł (napisany przez Adriana Billingtona).

BTW, czy zwykła sekwencja Oracle nie pasowałaby do twojego celu? Nie będzie bez przerw, ale będzie proste i skuteczne. Zwróć uwagę na wydajność podczas wstawiania dużej ilości danych przy użyciu swojego rozwiązania.

BTW #2, jaki jest cel ostatniej linii w twojej funkcji? Nigdy nie używasz N_VALUE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyszukaj ciąg dla wzorca wyrażenia regularnego i zastąp każde wystąpienie jako jego pochodną w Oracle SQL

  2. kopiuj z jednej bazy danych do drugiej za pomocą programisty Oracle sql - połączenie nie powiodło się

  3. Hibernacja + sekwencja wyroczni + wyzwalacz

  4. Wartość domyślna dla parametrów, które nie zostały przekazane do skryptu SQLPlus

  5. Przepełnienia pól Oracle do SQL2005 DATETIME w SSIS