MERGE Into

 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 里不能更新关联的字段。

你可能感兴趣的:(merge into)