sql >> Database >  >> RDS >> Oracle

Converteer Oracle SQL-query naar Azure SQL-query

Deze Oracle merge zoekopdracht heeft slechts een WHEN NOT MATCHED clausule en geen WHEN MATCHED , dus eigenlijk is dat insert en 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)

Dit is logisch equivalent aan de originele Oracle-query.

Wat betreft uw oorspronkelijke vraag:SQL Server ondersteunt zijn eigen smaak of merge verklaring , waarvan de syntaxis anders is dan die van Oracle. Je zou de Oracle merge . herschrijven 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)



  1. Selectie verlenen voor een weergave die geen basistabel is wanneer de basistabel zich in een andere database bevindt

  2. Mysql transacties binnen transacties

  3. E-mail verzenden met Oracle 10 g Forms

  4. Laravel migraties/db:zaad super traag