merge into报错ORA-00926ORA-38014
Posted 不想下火车的人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了merge into报错ORA-00926ORA-38014相关的知识,希望对你有一定的参考价值。
今天用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-00926ORA-38014的主要内容,如果未能解决你的问题,请参考以下文章
Oracle使用merge into 编写存储过程 遇编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字
ORA-01461 带有 MERGE INTO 语句和 clob 列
ORA-00904 在 DATE 列上使用“MERGE INTO”和“SELECT FROM dual”时出现“无效标识符”错误