为了防止重复插入和重复更新,一般会在更新前进行读入,再进行更新,这个就会访问两次数据库,浪费资源和时间,而且因为是分两次读的数据库,可能在两次之间数据会发生变化。
使用MERGE INTO可以一次性判断应该更新还是插入,方法简单可靠。
以下是仅对一个表进行了的判断操作,MERGE INTO还可以判断操作多张表。
MERGE INTO WXAGENT A USING
(SELECT '"+agentcode+"' AS AGENTCODE,
'"+agentName+"' AS NAME, '"+agentComCode+"' AS COMCODE,
'"+agentComName+"' AS COMNAME
FROM DUAL )B ON (A.AGENTCODE=B.AGENTCODE)
WHEN MATCHED THEN UPDATE SET
A.NAME=B.NAME, A.COMCODE=B.COMCODE, A.COMNAME=B.COMNAME,
A.UPDATEDATE=SYSDATE, A.AGENTTOTAL=A.AGENTTOTAL+1
WHERE A.AGENTCODE=B.AGENTCODE
WHEN NOT MATCHED THEN INSERT
(A.AGENTCODE, A.NAME, A.COMCODE, A.COMNAME,
A.UPDATEDATE, A.AGENTTOTAL)VALUES(
B.AGENTCODE,B.NAME,B.COMCODE,B.COMNAME,SYSDATE,1)