merge into报错ORA-00926、ORA-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做条件来判断是插入还是修改,那么这两个字段就不应该去修改了。

时间: 2024-10-14 03:30:29

merge into报错ORA-00926、ORA-38014的相关文章

expdp报错ora 39126

11.2.0.2,expdp报错: ORA-39126: Worker unexpected fatal error in KUPW$WORKER.GET_TABLE_DATA_OBJECTS []ORA-31642: the following SQL statement fails:BEGIN "SYS"."DBMS_CUBE_EXP".SCHEMA_CALLOUT(:1,0,1,'11.02.00.00.00'); END;ORA-06512: at &quo

alert日志报错:ERROR: failed to establish dependency between database RACDB and diskgroup resource ora.DATA.dg

一.打开数据库alert日志,发现有报错 ERROR: failed to establish dependency between database RACDB and diskgroup resource ora.DATA.dg 二.上mos查看(是一个BUG,无害) This error is harmless. It is documented in the  internal Bug 8304720 "ERROR: FAILED TO ESTABLISH DEPENDENCY BETW

Oracle ORA 12541 报错解决过程

? ? ? ? Oracle 导入全库之后使用plsql登陆时报错 ? ? 版本12C版本2 ? ? ORA-12541:?TNS:?No?Listener ? ? ? ? ? ? 再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法登陆,报错如上. ? ? 首先考虑是防火墙问题,查看防火墙和selinux均为关闭状态 ? ? 然后查看监听状态 查看 监听状态的命令为首先使用oracle 用户登陆操作系统,命令lsnrctl 进入监听程序,关键status 查看监听状态 ?

ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决

ORACLE数据库,MERGE INTO语句,经常会出现  ORA-30926: unable to get a stable set of rows in the source tables   这个错误,如下图所示: 经检查,这个错误是由于数据来源表(即语句中,from关键字后面的表)存在数据重复造成的.在实际项目研发中,我们一般不能随便改动数据表的记录,那么如何避免这种错误的产生以及如何改正错误呢? 请看下面的SQL: MERGE INTO TEMP_ZL_ACCOUNTLIST t1 U

git:Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).

Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists). 解决办法一:保留本地的更改,中止合并->重新合并->重新拉取 $:git merge --abort $:git reset --merge $:git pull 解决办法二:舍弃本地代码,远端版本覆盖本地版本(慎重) $:git fetch --all $:git reset --hard origin/ma

Sql server的Merge语句,源表中如果有重复数据会导致执行报错

用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说明这个问题. 现在我们有一张表叫T_Class_A,其建表语句如下: CREATE TABLE [dbo].[T_Class_A]( [ID] [int] IDENTITY(1,1) NOT NULL, [ClassName] [nvarchar](50) NULL, [StudentTotalCo

eclipse git 报错:the current branch is not configured for pull No value for key branch.xxx.merge found

eclipse git 报错:the current branch is not configured for pull No value for key branch.xxx.merge found in configuration 如图: 这是因为 在用gui创建分支的时候 config文件没有创建branch 在config文件加上 [branch "xxx"] remote = origin merge = refs/heads/xxx 即可 eclipse git 报错:th

解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).

Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists). 2017年02月22日 20:38:28 阅读数:19178 Git fetch和git pull的区别: 都可以从远程获取最新版本到本地 1.Git fetch:只是从远程获取最新版本到本地,不会merge(合并) $:git fetch origin master //从远程的origin的master主分支

git bash提交代码过程 以及 git pull报错 your local changes to the following files would be overwritten by merge:

git bash 平常提交代码流程: 1. 在文件根目录下鼠标右键点击空白处,选择git Base here 2. git status 查看哪些文件被修改,文件状态为 modified, 也就是被修改了,“Changes not stagged for commit”表示文件被修改但是提交前还没有被存储 3. git add 将修改添加到暂存区(git commit之前必须要执行这一步) git add . : 是将所有被修改的文件和新增加的文件,但不包括被删除的文件 添加到缓存区 git a