Oracle
 sql >> Database >  >> RDS >> Oracle

Converti query Oracle SQL in query SQL di Azure

Questa merge di Oracle la query ha solo un WHEN NOT MATCHED clausola e nessun WHEN MATCHED , quindi in pratica è insert e 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)

Questo è logicamente equivalente alla query Oracle originale.

Per quanto riguarda la tua domanda originale:SQL Server supporta la propria versione o merge dichiarazione , la cui sintassi è diversa da Oracle. Dovresti riscrivere Oracle merge come:

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)