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中不必指定别名。