这更像是一个警示而不是一个问题,因为如果他们遇到这种情况,会给某些人带来很多麻烦。
当我将命令的BindByName属性设置为true时,我在合并语句中遇到了神秘的ORA-01036错误。 如果我将BindByName设置为false,则更糟糕,实际上会给出不正确的结果,而不会给出错误消息。
经过一番研究后发现,你不能重复查询中的关键参数,而是你需要在using语句中使用关键变量来插入中的关键变量。这是一个简单的例子。
merge into rsvp r using (select :id as id from dual) d on (r.id=d.id)
when matched then update set rsvp_date=sysdate
when not matched then insert (id,rsvp_date) values (:id, sysdate)
这会给你错误。修复方法是将最后一行的insert语句更改为:
when not matched then insert (id,rsvp_date) values (d.id, sysdate)
答案 0 :(得分:0)
经过一番研究后发现,你不能重复查询中的关键参数,而是你需要在using语句中使用关键变量来插入中的关键变量。这是一个简单的例子。
merge into rsvp r using (select :id as id from dual) d on (r.id=d.id)
when matched then update set rsvp_date=sysdate
when not matched then insert (id,rsvp_date) values (:id, sysdate)
这会给你错误。修复方法是将最后一行的insert语句更改为:
when not matched then insert (id,rsvp_date) values (d.id, sysdate)