Oracle Merge 实现更新/插入记录的自动判断


在 SQL MAP 中定义这样的 SQL ,Oracle 数据库中, 如果有  s.post=t.post and s.FLISK_ID=t.FLIGHK_ID

这 2 个条件和传入的数据相等的, 那么就执行 UPDATE   SET  语句。 否则执行  INSERT 语句。

  1. merge into crs.flight_task_config s    
  2.      using (select #fliaskId# as  FLIID,#post# as post     
  3.      from dual) t    
  4.      on    
  5.      (s.post=t.post and s.FLISK_ID=t.FLIGHK_ID )   
  6.      when  matched then update    
  7.         set   s.PERSONS = #persons:DECIMAL#,   
  8.               s.LAST_MODIFIER = #lastModifier:DECIMAL#,   
  9.               s.LAST_MODIFY_TIME = SYSDATE,   
  10.               s.IF_LINGYAN = 'NO'  
  11.         when not matched then    
  12.         insert (   
  13.             s.TASFIG_ID,   
  14.             s.FLIGASK_ID,   
  15.             s.POST,   
  16.             s.PERSONS,   
  17.             s.LAST_MODIFIER,    
  18.             s.LAST_MODIFY_TIME,   
  19.             s.IF_LINGYAN)   
  20.                 values (   
  21.              crs.SEQ_fligconfig.Nextval,   
  22.              #fligkId:DECIMAL#,   
  23.              #post:VARCHAR#,   
  24.              #persons:DECIMAL#,   
  25.              #lastModifier:DECIMAL#,   
  26.              SYSDATE,   
  27.              'NO')     

相关内容

    暂无相关文章