Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Konvertieren Sie eine Oracle SQL-Abfrage in eine Azure SQL-Abfrage

Diese Oracle-merge Abfrage hat nur einen WHEN NOT MATCHED -Klausel und kein WHEN MATCHED , also im Grunde ist das insert und not exists :

insert into studies(study_id, study_date)
select x.*
from (values(@study_id, @study_date)) as x(study_id, study_date)
where not exists (select 1 from studies s1 where s1.study_id = x.study_id)

Dies entspricht logisch der ursprünglichen Oracle-Abfrage.

Zu Ihrer ursprünglichen Frage:SQL Server unterstützt seine eigene Variante oder merge Erklärung , dessen Syntax sich von Oracle unterscheidet. Sie würden das Oracle merge umschreiben als:

merge studies as s
using (values(@study_id, @study_date)) as x(study_id, study_date)
on (s.study_id = x.study_id)
when not matched 
    then insert (study_id, study_date) values(x.study_id, x.study_date)