Oracle Merge备忘示例

Oracle的merge语法非常实用,用于Insert、Update判断情况。以下是自己书写的一个示例,以免时间长了语法形式忘记了。

 MERGE INTO T_FR_GUOSZX T
                USING (SELECT c_row.NSRSBH  NSRSBH,
                              c_row.WSPZXH  WSPZXH,
                              c_row.ZXYY_DM ZXYY_DM,
                              c_row.HZRQ    HZRQ,
                              c_row.SWJG_DM SWJG_DM,
                              c_row.GXSJ    GXSJ
                         FROM dual) NT
                ON (T.NSRSBH = NT.NSRSBH)
                WHEN MATCHED THEN
                    UPDATE
                       SET ZXWSXH = NT.WSPZXH,
                           ZXYY   = NT.ZXYY_DM,
                           ZXRQ   = NT.HZRQ,
                           ZXJG   = NT.SWJG_DM,
                           GXSJ   = NT.GXSJ
                WHEN NOT MATCHED THEN
                    INSERT
                        (ID, NSRSBH, ZXWSXH, ZXYY, ZXRQ, ZXJG, GXSJ)
                    VALUES
                        (SYS_GUID(),
                         NT.NSRSBH,
                         NT.WSPZXH,
                         NT.ZXYY_DM,
                         NT.HZRQ,
                         NT.SWJG_DM,
                         NT.GXSJ);

备注:c_row是游标中定义的变量。using中需要另外指定字段别名。另外,如果不在游标中使用Merge,则在using中不必指定别名。

原文地址:https://www.cnblogs.com/jizhong/p/3997815.html