2010-10-22

merge over dblink含有sysdate时报错

日常经常会通过dblink进行数据库的远程merge,发现在类似
MERGE INTO table_a@adb.oracle.com a
USING table_b b
ON (a.id = b.id)
WHEN MATCHED THEN
   UPDATE
      SET a.cou = b.cou,
          a.dd  = sysdate
WHEN NOT MATCHED THEN
   INSERT
     (a.id,
      a.cou,
      a.dd)
   VALUES
     (b.id,
      b.cou,
      sysdate);
会出现
ORA-01008: not all variables bound
ORA-02063: preceding line from adb.oracle.com
经尝试,凡是出现sysdate就会报错,去掉就正常。
在这段代码前把sysdate赋予一个变量,在merge时使用变量即可。
问题解决。
数据库版本:10.2.0.4.0 - 64bit