码迷,mamicode.com
首页 > 其他好文 > 详细

merge into报错ORA-00926、ORA-38014

时间:2017-03-23 00:57:18      阅读:438      评论:0      收藏:0      [点我收藏+]

标签:exception   ibatis   问题   今天   and   报错   sql   can   channel   

    今天用ibatis写个插入操作,为了兼容修改想使用 merge into语句,以便重复插入时直接 update,具体语句如下:

<insert id="wlf">

MERGE INTO t_wlf_info t USING dual ON(t. id=#id# and t.channel=#channel#)

WHEN MATCHED THEN UPDATE SET t.id=#id#,t.channel=#channel#,t.url=#url#

WHEN NOT MATCHED THEN INSERT t_wlf_info

(id,channel, url) VALUES(#id#,#channel#,#url#)

</insert>

     结果遇到了两个问题:

java.sql.BatchUpdateException:ORA-00926: missing VALUES keyword

...

java. sql.BatchUpdateException: ORA-38104: Columns referenced in the ON Clause cannot be updated: "T"."ID"

...

     第一个问题是在插入时多加了表明,在INSERT后面把表名去掉就好,另外这里也没必要加INTO,语法规定的。第二个问题是不能把ON后面的条件字段放到update里,它认为你拿id和channel做条件来判断是插入还是修改,那么这两个字段就不应该去修改了。

merge into报错ORA-00926、ORA-38014

标签:exception   ibatis   问题   今天   and   报错   sql   can   channel   

原文地址:http://www.cnblogs.com/wuxun1997/p/6602202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!