Oracle-merge用法详解(三)

2014-11-24 08:06:46 · 作者: · 浏览: 8
段是否匹配来updates表PRODUCTS的信息:

DE>SQL> MERGE INTO products p

2 USING newproducts np

3 ON (p.product_id = np.product_id)

4 WHEN MATCHED THEN

5 UPDATE

6 SET p.product_name = np.product_name,

7 p.category = np.category;

3 rows merged.

SQL> SELECT * FROM products;

PRODUCT_ID PRODUCT_NAME CATEGORY

---------- -------------------- ----------

1501 VIVITAR 35MM ELECTRNCS

1502 OLYMPUS CAMERA ELECTRNCS

1600 PLAY GYM TOYS

1601 LAMAZE TOYS

1666 HARRY POTTER TOYS

SQL>

SQL> ROLLBACK;

Rollback complete.

SQL>DE>

在上面例子中, MERGE语句影响到是产品id为1502, 1601和1666的行. 它们的产品名字和种 类被更新为表newproducts中的值. 下面例子省略UPDATE子句, 把表NEWPRODUCTS中新的PRODUCT_ID插入到表PRODUCTS中, 对于在两个表中能够匹配上PRODUCT_ID的数据不作任何处理. 从这个例子你能看到PRODUCT_ID=1700的行被插入到表PRODUCTS中.

DE>SQL> MERGE INTO products p

2 USING newproducts np

3 ON (p.product_id = np.product_id)

4 WHEN NOT MATCHED THEN

5 INSERT

6 VALUES (np.product_id, np.product_name,

7 np.category);

1 row merged.

SQL> SELECT * FROM products;

PRODUCT_ID PRODUCT_NAME CATEGORY

---------- -------------------- ----------

1501 VIVITAR 35MM ELECTRNCS

1502 OLYMPUS IS50 ELECTRNCS

1600 PLAY GYM TOYS

1601 LAMAZE TOYS

1666 HARRY POTTER DVD

1700 WAIT INTERFACE BOOKSDE>

2、带条件的Updates和Inserts子句