oracle8i中没有此功能,oracle9i中有merge可以实现此功能
MERGE INTO copy_emp c
USING employees e
ON (c.employee_id = e.employee_id)
WHEN MATCHED THEN
UPDATE SET
...
WHEN NOT MATCHED
MERGE INTO copy_emp c
USING employees e
ON (c.employee_id = e.employee_id)
WHEN MATCHED THEN
UPDATE SET
...
WHEN NOT MATCHED THEN
INSERT VALUES...;

解决方案 »

  1.   

    可以用merge语句:
    merge into table_a a
    using (select key_val,val1,val2,... from dual b) s
    on (a.key_value=s.key_value)
    when matched then
      update set a.xxx=s.xxx,....
    when not matched then
      insert (a.xxx,a.xxxx,.....)
      values(s.xxx,s.xxxx,......);
      

  2.   

    select * from t1 where is EXISTS (select 1 from t2 where t2.c1='...'). 若实现你上实功能,在oracle最好还是用MERGE语句吧.
      

  3.   

    对付你这个问题.用merge 超级爽..最好的语句了...