Oracle
 sql >> база данни >  >> RDS >> Oracle

Напишете оператор за вмъкване с клауза за избор, връщаща идентификатор в Oracle

Това няма да работи. RETURNING клаузата не може да се използва по начина, по който го правите, т.е.

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

но ще работи, ако вмъкнете VALUES , като

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

Това означава, че или ще трябва да пренапишете този код, или да потърсите заобиколно решение описано в връщане с insert..select статия (написана от Адриан Билингтън).

Между другото, няма ли обикновена последователност на Oracle да отговаря на вашата цел? Няма да бъде без пропуски, но ще бъде просто и ефективно. Имайте предвид производителността, когато вмъквате огромно количество данни, като използвате вашето решение.

BTW #2, каква е целта на последния ред във вашата функция? Никога не използвате 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. Грешки при инсталиране на jdk 1.7 в linux

  2. ORA-01749:не можете да ПРЕДОСТАВЯТЕ/ОТМЕНЯТЕ привилегии на/от себе си

  3. как да добавите секунда в времевата марка на Oracle

  4. Задействане за проверка за дубликати

  5. Oracle SQL:променливи, използвани вместо имена на таблици