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

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

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

merge into crs.flight_task_config s 
	 using (select #fliaskId# as  FLIID,#post# as post  
	 from dual) t 
	 on 
	 (s.post=t.post and s.FLISK_ID=t.FLIGHK_ID )
	 when  matched then update 
	    set   s.PERSONS = #persons:DECIMAL#,
		      s.LAST_MODIFIER = #lastModifier:DECIMAL#,
		      s.LAST_MODIFY_TIME = SYSDATE,
		      s.IF_LINGYAN = 'NO'
	    when not matched then 
		insert (
			s.TASFIG_ID,
			s.FLIGASK_ID,
			s.POST,
			s.PERSONS,
			s.LAST_MODIFIER, 
			s.LAST_MODIFY_TIME,
			s.IF_LINGYAN)
			    values (
			 crs.SEQ_fligconfig.Nextval,
			 #fligkId:DECIMAL#,
			 #post:VARCHAR#,
			 #persons:DECIMAL#,
			 #lastModifier:DECIMAL#,
			 SYSDATE,
			 'NO')   
 

猜你喜欢

转载自jxdwuao.iteye.com/blog/1611807
今日推荐