pl sql 学习笔记(四) merge oracle 用法

来源:互联网 发布:软件购买合同范本 编辑:程序博客网 时间:2024/04/30 02:58

1、  Merge语句:

语法:merge into table_name , rename_table_name

      Using (qurery_sql语句) 查询结果rename

      On (条件: )

      When matchedthen

      Update_sq;

      When notmatched then

      Insert_sql

 

1UPDATEINSERT子句是可选的

2UPDATEINSERT子句可以加WHERE子句

3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表

4UPDATE子句后面可以跟DELETE子句来去除一些不需要的行

具体用法:

网上案例:

 

    MERGE INTO PRODUCTS P      USING NEWPRODUCTS NP      ON (P.PRODUCT_ID = NP.PRODUCT_ID)      WHEN MATCHED THEN        UPDATE           SET P.PRODUCT_NAME = NP.PRODUCT_NAME,               P.CATEGORY     = NP.CATEGORY         WHERE P.CATEGORY = 'DVD'       ---(这里后面可以添加delete)     ---     Delete  where  条件:     WHEN NOT MATCHED THEN        INSERT          (PRODUCT_ID          ,PRODUCT_NAME          ,CATEGORY)        VALUES          (NP.PRODUCT_ID          ,NP.PRODUCT_NAME          ,NP.CATEGORY) WHERE NP.CATEGORY != 'BOOKS';     SELECT * FROM PRODUCTS;  SELECT * FROM NEWPRODUCTS



说明:表products 与表newproducts通过相同的主键 id 相互联合。

如果:满足on 后面的条件,则更新,否则将插入记录。

也就是:如果记录中有了记录就更新,否则添加记录。

更新记录和添加记录时也可以添加条件用来选择性的添加或更新。所以可以带入各自的where

 

update后面可以增加delete where条件:用于删除满足条件的记录。 Delete只能用于update后面,不能用于 insert 后面。

 

个人学习看法:可能是用于批量修改,或者在旧的的功能上升级新的东西。不管怎么样都只是修改products表中的记录,不会对 newproducts有影响。

 

 

对于表newproducts 表,可以用 products子查询来完成。只要满足要求就行。。。

0 0
原创粉丝点击