oracle动态update语句
1、今天公司项目提交更新表单出错,这个bug交给了我。
2、OK,debugger一下,发现提交的时候后台打印出错,提示大概就是这样 SQLException '17004' 其实很简单,这种错误一般都是说某一列传进来的值为null,因此报错,所以追踪下去,发现是update语句没有做动态传值处理,也就是说需要写成动态sql语句
3、那么Mybatis的动态sql语句是怎么样的呢?
update TableName
<trim prefix="set" suffixOverrides=",">
<if test=" XX!=null and XX!='' ">
XX = #{xx,jdbcType='varchar'},
</if>
<if test=" XX!=null and XX!='' ">
XX = #{xx,jdbcType='varchar'},
</if>
<if test=" XX!=null and XX!='' ">
XX = #{xx,jdbcType='varchar'},
</if>
<trim>
4、解释一下<trim>
官方文档大概意思:<trim>节点标签:trim主要功能是可以在Trim包含的内容前加上某些前缀(prefix),也可以在Trim包含的内容之后加上某些后缀(suffix)还可以把Trim包含内容的首部的某些内容忽略掉(prefixOverrides)
,也可以把Trim包含的内容的尾部的某些内容忽略掉(suffixOverrides)
<trim prefix="set" suffixOverrides=",">
所以这行代码的意思是:在前面加上set,去掉最后的逗号。
5、既然都说到update动态sql了那么顺便回顾一下其他动态sql的写法。
6、查询
SELECT XX, XX FROM TableName WHERE 1=1<if test="XX !=null and XX!='' "> ADN XX LIKE CONCAT(CONCAT('%', #{XX, jdbcType=varchar}),'%') --模糊查询</if> <if test="XX != null and XX != '' "> AND XX = #{XX, jdbcType=INTEGER} </if>
</if>
7、增加
insert into TableName
(
<trim suffixOverrides=","><if test="xx!=null and xx!=''">xx,</if><if test="xx!=null and xx!=''">xx,</if></trim>
)
values
(
<trim suffixOverrides=","><if test="xx!=null and xx!=''">#{xx},</if><if xx="name!=null and xx!=''">#{xx},</if></trim>
)
8、删除
delete from TableName where xx in<!-- foreach用于迭代数组元素 open表示开始符号close表示结束符号seprator表示元素间的分割符items表示迭代的数组--><foreach collection="array" open="(" close=")" separator="," item="xx">#{xx}</foreach>
9、有问题欢迎指出,谢谢
oracle动态update语句相关推荐
- Oracle 动态SQL语句
Oracle 动态SQL语句 EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQLpackage包. 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块 ...
- oracle 动态条件查询语句,教您Oracle动态查询语句的用法
Oracle动态查询语句是一类特殊的查询语句,下面就为您详细介绍Oracle动态查询语句的语法,如果您对Oracle动态查询方面感兴趣的话,不妨一看. 1. 当使用EXECUTE IMMEDIATE语 ...
- oracle执行update语句卡死
oracle执行update语句卡死 问题:当在plsql上执行update语句时,一直在显示正在执行中,很久不出结果.执行select语句或者是其他表的update语句时,可以正常执行 原因:只有u ...
- oracle怎么优化动态sql语句,oracle动态sql语句处理
动态SQL语句处理:根据要处理的sql语句的作用不同,可以使用三种不同类型的动态sql方法:使用execute immediate语句可以处理包括ddl(create.alter和drop).DCL( ...
- Oracle执行UPDATE语句的步骤
执行UPDATE语句的步骤: 如果数据和回滚数据不在数据库高速缓冲区中,则Oracle服务器进程将把它们从数据文件中读到数据库高速缓冲区中. Oracle服务器进程在要修改的数据行上加锁(行一级的锁, ...
- Oracle数据库update语句用法,多表批量更新对应的字段值
日常工作经常会遇到参照某个表格,更新主表对应字段的值 一般可以用excel的VLOOKup函数进行查找匹配,但是这种方法需要将表从数据库中导出,更新完了之后再导回数据库中. 我们用update语句可以 ...
- Oracle 批量update语句,Oracle之update语句优化研究 批量更新
update (select YP.DEALLOCATE_BUDGET_, YP.REMAIN_BUDGET_ from MP_YEAR_PLAN YP where YP.YEAR_PLAN_ID_ ...
- mysql动态update语句,mysql – SQL:具有动态列值赋值的update语句
想象一下以下sql查询: UPDATE MYTABLE SET COL2 = (SELECT COL2 + 1 FROM (SELECT MAX(COL2) FROM MYTABLE) AS X) W ...
- oracle 更新update语句
update 表名 set 列名=新值 where条件; select语句 for update;
最新文章
- 编程基础知识科普:C#中的问号运算符
- (iOS-基本知识)Category VS Extension 原理详解
- ClientDataSet建立索引和排序
- 开源串口调试助手java_(串口通信编程) 开源串口调试助手Common (Com Monitor)
- php yii框架连接数据库,【PHP开发框架】yii框架怎样衔接数据库
- 萨纳斯耿文强:光伏管控智能化亟待统一标准
- 居民小区变配电电力监控系统-安科瑞苏月婷
- 智方8000系文具进销存管理系统 华军软件网
- yocto linux 内核源码,利用Bitbake、Poky、Yocto、OpenEmbedded编译生成车规AGL Linux
- 服务器系统部署方案,系统部署方案.doc
- hackerrank初级篇之Mini-Max Sum
- Fata erro:Kinetis (connect):Timeout while halting CPU.CPU dones not stop. Sesion aborted!
- 【效率特工队】Excel转手机通讯录格式,如何将一个Excel批量拆分生成多个vcf,怎么快速的加微信好友,优化一下方法效率可能更高,解决微信通讯录手机联系人好友不显示的问题
- 广东移动至2020年数据中心机柜规模将近10万架
- 【JOURNAL】怎么计算4万亿
- mt4下载正规的渠道才安全
- 攻防世界——supersqli
- 应用在开关模式电源中的光耦合器
- rabbitMQ快速开始整合springboot模板
- 计算机水平cet2是什么等级,英语水平CET2是什么意思