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

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

 2007-05-10 12:18:11 来源:WEB开发网   
核心提示: 2、带条件的Updates和Inserts子句你能够添加WHERE子句到UPDATE或INSERT子句中去, 来跳过update或insert操作对某些行的处理. 下面例子根据表NEWPRODUCTS来更新表PRODUCTS数据, 但必须字段CATEGORY也得同时匹配上:SQL>

2、带条件的Updates和Inserts子句

你能够添加WHERE子句到UPDATE或INSERT子句中去, 来跳过update或insert操作对某些行的处理. 下面例子根据表NEWPRODUCTS来更新表PRODUCTS数据, 但必须字段CATEGORY也得同时匹配上:

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 WHERE p.category = np.category;
  2 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 DVD
  SQL>
  SQL> rollback;

在这个例子中, 产品ID为1502,1601和1666匹配ON条件但是1666的category不匹配. 因此MERGE命令只更新两行数据. 下面例子展示了在Updates和Inserts子句都使用WHERE子句:

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
  8 WHERE p.category = 'DVD'
  9 WHEN NOT MATCHED THEN
  10 INSERT
  11 VALUES (np.product_id, np.product_name, np.category)
  12 WHERE np.category != 'BOOKS'
  SQL> /
  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 TOYS
  SQL>

上一页  1 2 3 4  下一页

Tags:详解 Oracle MERGE

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