Oracle 之 MERGE INTO

MERGE INTO是Oracle 9i新增的,8i以及之前版本都没有.
这个函数的主要功能是将一个表的数据倒入到另外一个表中.它合并了update和insert语句,使得在一次更新数据时,只用一次磁盘I/O(爽啊.)

这一个优点是MERGE INTO在之前单纯的UPDATE和INSERT上的一个性能的大大提高.

我们来看看MERGEINTO 各个KEYWORD的具体含义


1.Merge into table_name [alias_name]
这里的table_name是等待被更新的数据表,或者叫目的表,数据目的表.

2.Using statement [alias_name]
这里的statement可以是数据表,也可以是查询的数据集合.这些数据集合就是数据源.

3.On condition
condition就是对于需要更新数据的记录进行限定的条件.类似where子句中的条件.

4. Update statement
这里就是更新数据语句部分.

5. Insert(column) values(arg)
这里和普通insert语句的唯一区别是不需要into子句,否则报找不到values关键字错误.

WHEN MATCHED THEN和WHEN NOT MATCHED THEN 用来在On判断之后区分的不同操作情况.

示例:

merge into t_csc_flowlog a
  using (select pro_id, gtin, security_code
           from t_csc_product
          start with security_code = :new.security_code
         connect by prior security_code = parent_code) b
  on (a.gtin = b.gtin and a.security_code = b.security_code)
  when matched then
    update set a.flow_log = :new.flow_log
  when not matched then
    insert
      (flow_id, pro_id, gtin, security_code, flow_log, create_time)
    values
      (func_get_seq('t_csc_flowlog'),
       b.pro_id,
       b.gtin,
       b.security_code,
       :new.flow_log,
       sysdate);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值