Oracle
 sql >> Base de données >  >> RDS >> Oracle

Convertir une requête Oracle SQL en requête Azure SQL

Cette merge Oracle la requête a juste un WHEN NOT MATCHED clause et pas de WHEN MATCHED , donc en gros c'est insert et 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)

Ceci est logiquement équivalent à la requête Oracle d'origine.

En ce qui concerne votre question initiale :SQL Server prend en charge sa propre saveur ou merge déclaration , dont la syntaxe est différente de celle d'Oracle. Vous réécririez l'Oracle merge comme :

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)