【发布时间】:2016-05-05 12:56:49
【问题描述】:
这与其说是一个问题,不如说是一个警告,因为如果遇到这种情况,它会为人们省去很多麻烦。
当我将命令的 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)
这会给你错误。解决方法是将最后一行的插入语句更改为:
when not matched then insert (id,rsvp_date) values (d.id, sysdate)
【问题讨论】: