合并 oracle merge into 用法

来源:互联网 发布:彩票网络开售最新消息 编辑:程序博客网 时间:2024/05/28 05:16
MERGE INTO 的用途(  简单来说,就是:“有则更新,无则插入”)
语法:

       MERGE [INTO] [schema.]table [alias]
       USING {[schema.]table|views|query} [alias]
       ON {condition}
       WHEN MATCHED THEN UPDATE SET {clause}
       WHEN NOT MATCHED THEN INSERT VALUES {clause}

简单示例:

--:创建对应备份表数据的存储过程
create or replace procedure synchronous_data_out is
merge_start number;
merge_end number;
begin
     dbms_output.put_line('start:'||sysdate);
     merge_start:=dbms_utility.get_cpu_time;
     MERGE INTO HVS_WARDLOGS_OUT hin                                                                  --into 目标表,到哪里去
     USING HVS_WARDLOGS_OUT@Orcl_Ogate hout                                                      --using 数据源表,从哪里来
     ON (hin.serialno = hout.serialno)-- AND (H1.NAME!=H.NAME OR H1.AGE!=H.AGE))   --on 数据是否一样的判断依据
     --更新 理论上除数据是否一样的判断依据列,都需要更新(on条件满足更新,否则插入)
     WHEN MATCHED THEN update set hin.PATNO= hout.PATNO,hin.HOSNO = hout.HOSNO,hin.WARDNO = hout.WARDNO,hin.DEPTCODE = hout.DEPTCODE
     WHEN NOT MATCHED THEN insert values(hout.SERIALNO,hout.PATNO,hout.HOSNO,hout.WARDNO,hout.DEPTCODE);
     commit;
     dbms_output.put_line('end:'||sysdate);
     merge_end:=dbms_utility.get_cpu_time;
     dbms_output.put_line('need time:'||(merge_end - merge_start));
end synchronous_data_out;


0 0
原创粉丝点击