语法为:
MERGE INTO table
USING data_source
ON (condition)
WHEN MATCHED THEN update_clause
WHEN NOT MATCHED THEN insert_clause;注意:
ON 后面必须用括号指出匹配条件
UPDATE 和 INSERT 后面均不能限定需要操作的表,因为使用 MERGE INTO 语句时已经指定。
MERGE语句不能修改在ON子句中引用的列。由于你的表只有一个字段,所以这种需求不能用MERGE来实现。

解决方案 »

  1.   

    INSERT INTO TEST
    SELECT NUM
    FROM (SELECT ROWNUM AS NUM FROM DUAL CONNECT BY ROWNUM<=9) A
    WHERE NOT EXISTS(
    SELECT 1
    FROM TEST B
    WHERE A.NUM=B.NUM
    );
      

  2.   

    INSERT INTO TEST
    SELECT NUM
    FROM (SELECT ROWNUM AS NUM FROM DUAL CONNECT BY ROWNUM<=9) A
    WHERE NOT EXISTS(
    SELECT 1
    FROM TEST B
    WHERE A.NUM=B.NUM
    );
      

  3.   

    merge into Test_0002 ausing Test_0003 bon (a.id_01=b.id_01)when matched then
     update set id_01=b.id_01when not matched then
     insert (a.id_01) values(b.id_01);