有则修改,无则添加. oracle 的 merge into用法

MERGE INTO t_procedure_test pt
USING (select  G.technicsid,G.route_groupid groupid,g.technicsname,g.group_name groupname,t.* from (SELECT ro.route_groupid, ro.group_next group_name,tec.technicsid,tec.technicsname
FROM t_smo_technics tec ,t_co_route_control ro
WHERE tec.model_code='{0}' AND tec.route_code=ro.route_code AND ro.group_next='{1}') g
left join t_procedure_test t on (g.route_groupid=t.GROUP_CODE and G.technicsid=T.technics_id and  t.test_item_name='{2}')) gro
ON ( gro.groupid=pt.group_code and gro.technicsid=pt.TECHNICS_ID and gro.test_item_name=pt.test_item_name )
WHEN MATCHED THEN
UPDATE SET pt.mini_limit='{3}',pt.max_limit='{4}',pt.unit='{5}',pt.memo='{6}',pt.person_modify='{7}',pt.time_modify=sysdate
WHEN NOT MATCHED THEN
INSERT (technics_id,technics_name,group_code,group_name,test_item_name,mini_limit,max_limit,unit,memo,PERSON_ADD,TIME_ADD,test_item_id,model_code)
VALUES(gro.technicsid,gro.technicsname,gro.groupid,gro.groupname ,'{2}','{3}','{4}','{5}','{6}','{7}',sysdate,SEQ_T_PROCEDURE_TEST.NEXTVAL,{0})

posted @ 2019-04-19 16:05  hanje  阅读(574)  评论(0编辑  收藏  举报