WEB开发网
开发学院数据库Oracle 详解 Oracle 10g 中 MERGE 功能的增强 阅读

详解 Oracle 10g 中 MERGE 功能的增强

 2007-05-10 12:18:11 来源:WEB开发网   
核心提示: 1、可省略的UPDATE或INSERT子句在Oracle 9i, MERGE语句要求你必须同时指定INSERT和UPDATE子句.而在Oracle 10g, 你可以省略UPDATE或INSERT子句中的一个. 下面的例子根据表NEWPRODUCTS的PRODUCT_ID字段是否匹配来upd

1、可省略的UPDATE或INSERT子句

在Oracle 9i, MERGE语句要求你必须同时指定INSERT和UPDATE子句.而在Oracle 10g, 你可以省略UPDATE或INSERT子句中的一个. 下面的例子根据表NEWPRODUCTS的PRODUCT_ID字段是否匹配来updates表PRODUCTS的信息:

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>

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

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 BOOKS

上一页  1 2 3 4  下一页

Tags:详解 Oracle MERGE

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接