MERGE INTO CS_CL_DOME_IMG_PRT X USING (SELECT A.OID, A.G_NO, C.G_CODE, C.G_NAME FROM A) Z ON (X.CL_OID = Z.OID AND X.G_NO = Z.G_NO) WHEN MATCHED THEN UPDATE SET X.HS_CODE = Z.G_CODE, X.G_NAME = Z.G_NAME, X.G_MODEL = Z.ELEMENT WHEN NOT MATCHED THEN INSERT (CL_OID, G_NO, HS_CODE, G_NAME, G_MODEL) VALUES (Z.OID, Z.G_NO, Z.G_CODE, Z.G_NAME, Z.ELEMENT); COMMIT;
MERGE Into 表A 别名Z
using(查询语句(可以是关联出来的)) 别名X
on (Z.字段=X.字段 两个表关系条件)
WHEN MATCHED THEN
UPDATE
……
WHEN NOT MATCHED THEN
INSERT ……
注意:有的时候执行 MERGE Into 的存储过程看到假死,或报出:无法更新ON子句中引用的列
原因:update set里有关联的字段。
要求:update 里不能更新关联的字段。