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