日期:2014-05-17  浏览次数:21193 次

怎样让oracle语句实现insert和update根据条件case when执行
我想实现 的效果就是更新的时候判断是否有更新所必备的条件,如果没有的话则执行插入语句
逻辑就像下边的这段sql语句(注:下面的这段sql语句在else 部分是有错的)请高手指点一下 !加急件
UPDATE A cc
SET CC.role_id = '111'
WHERE cc.user_id = (CASE WHEN            (SELECT cc1.role_id 
            FROM A cc1
           WHERE cc1.user_id ='abc')
           IS NOT NULL 
          THEN 'abc'
          ELSE (INSERT INTO Acc1 VALUES ('111','abc')) NULL
          END ) ;

------解决方案--------------------
给你个merge into例子,改一下就可以
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'
    WHEN NOT MATCHED THEN
     INSERT
     VALUES (np.product_id, np.product_name, np.category)
  

前提是一张表