さくら荘龚一半樱花庄的龚一半

Oracle MARGE INTO 快速理解与使用方法

龚一半·2022-12-07 17:15·468 次阅读

Oracle MARGE INTO 快速理解与使用方法

快速理解:MARGE INTO(刷新数据)

在Oracle中使用于Procedure(程序)中,在Procedure中对数据表Table进行的操作时,既可以使用INSERT INTO语句用于插入数据,也可以使用MARGE INTO语句用于刷新数据。相较于INSERT INTO语句只能插入数据,MARGE语句可以刷新已有的数据避免插入重复数据。

比如说,我要插入下面16个字段的数据(字段内容忽略):

insert into crmii.T_STAT_KHJF_R(rq,khh,qdid,jyl,jyl_gjzh,yj,yj_gjzh,jyj,jyj_gjzh,crm_jyj_z,crm_jyj,yxh,yyb,khrq,zjkh,SKKH)
select * from XXXXXXX

 

如果Procedure执行一遍,则会插入成功1次,但如果在重复执行的JOB中,就会跟随JOB执行次数的增多,重复插入数据

不如我们来使用marge into (忽略字段内容):

MERGE INTO CRMII.T_STAT_SCZR_ZYXHRQ T1
    USING (SELECT KHH, N1 AS ZYXHRQ
             FROM CRMII.TMP_COMMON1
            WHERE N1 IS NOT NULL) T2
    ON (T1.KHH = T2.KHH)
    WHEN MATCHED THEN
      UPDATE SET T1.ZYXHRQ = NVL(T1.ZYXHRQ, T2.ZYXHRQ);

大致的逻辑是:

刷新表()

使用数据集()

刷新规则()

符合规则,则()

不符合规则,则()

ps.规则判定内可以同时取到被刷新表使用数据集的数据

标准格式如下:

MERGE INTO XXX
    USING (SELECT * FROM TTT)
    ON (XXX. = TTT.)
    WHEN MATCHED THEN
        UPDATE SET XXXXXXXX
    WHEN NOT MATCHED THEN
        INSERT INTO XXX

 

posted @   龚一半  阅读(469)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示