精华内容
下载资源
问答
  • 主要介绍了解决Oracle批量修改问题,需要的朋友可以参考下
  • --将当前数据库所有序列的名称存放到游标 此处写判断语句 否则会出现ORA-32793 begin --dbms_output.enable(buffer_size=>null); open seq_cur; fetch seq_cur into seq_name; loop exit when not seq_cur%found; ...

    declare

    seq_name varchar2(100);

    l_currval number; --序列的当前值

    cursor seq_cur is

    select ur.sequence_name from user_sequences ur WHERE sequence_name LIKE 'HMALL%' OR sequence_name LIKE 'SYS%' OR sequence_name LIKE 'ACT%';--将当前数据库所有序列的名称存放到游标中 此处写判断语句 否则会出现ORA-32793

    begin

    --dbms_output.enable(buffer_size=>null);

    open seq_cur;

    fetch seq_cur into seq_name;

    loop

    exit when not seq_cur%found;

    --修改数据库序列的下限

    execute immediate 'alter sequence '||seq_name||' minvalue -5000';

    --需要变化的数量

    execute immediate 'alter sequence '||seq_name||' increment by 10000';

    --给序列取下一个数

    execute immediate 'select '||seq_name||'.nextval from dual' into l_currval;

    --将序列的递增情况,恢复为按1递增

    execute immediate 'alter sequence '||seq_name||' increment by 1';

    --将数据库序列的下限修改为1

    execute immediate 'alter sequence '||seq_name||' minvalue 1';

    --dbms_output.put_line(l_currval);

    fetch seq_cur into seq_name;

    end loop;

    close seq_cur;

    end;

    展开全文
  • 1、MyBatis + Oracle 实现批量新增和批量修改 需要注意的是保存或修改是返回的值为-1,没有返回行数,请看文章:https://blog.csdn.net/qq_40015409/article/details/113416324 MyBatis + Oracle 实现批量新增...

    MyBatis 实现批量新增和批量修改

    1、MyBatis + Oracle 实现批量新增和批量修改

    需要注意的是保存或修改是返回的值为-1,没有返回行数,请看文章:https://blog.csdn.net/qq_40015409/article/details/113416324

    MyBatis + Oracle 实现批量新增(基于序列化自增长主键)

    mapper 接口

     void batchInsert(List<ASingleProject> list); 

    mapper.xml

    <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="false">
      	 insert into A_SINGLE_PROJECT (KID, SINGLEPROJECTID, ZJZMJ, 
          DSGD, DSCS, DXCS, JGLX, 
          JCXS, DS_JZMJ, JKC_JZMJ, 
          DX_JZMJ, ZZ_JZMJ, BG_JZMJ, 
          SY_JZMJ, CF_JZMJ, RF_JZMJ, 
          QT_YFMJ, DSGYTS, TS_60_100, 
          TS_100_144, TS_144, TS_BS, 
          ZTS, JGZDKD, HS, XSDTS, 
          KCFTS) 
           select s_a_single_project.nextval, cd.* from (
            <foreach collection="list" item="item" index="index" separator="UNION ALL" >
            (
            select 
       	  		#{item.singleprojectid,jdbcType=DECIMAL}, 
       	  		#{item.zjzmj,jdbcType=VARCHAR}, 
          		#{item.dsgd,jdbcType=VARCHAR}, 
          		#{item.dscs,jdbcType=VARCHAR}, 
          		#{item.dxcs,jdbcType=VARCHAR}, 
          		#{item.jglx,jdbcType=VARCHAR}, 
          		#{item.jcxs,jdbcType=VARCHAR}, 
          		#{item.dsJzmj,jdbcType=VARCHAR}, 
          		#{item.jkcJzmj,jdbcType=VARCHAR}, 
          		#{item.dxJzmj,jdbcType=VARCHAR}, 
          		#{item.zzJzmj,jdbcType=VARCHAR}, 
          		#{item.bgJzmj,jdbcType=VARCHAR}, 
          		#{item.syJzmj,jdbcType=VARCHAR}, 
          		#{item.cfJzmj,jdbcType=VARCHAR}, 
          		#{item.rfJzmj,jdbcType=VARCHAR}, 
          		#{item.qtYfmj,jdbcType=VARCHAR}, 
          		#{item.dsgyts,jdbcType=VARCHAR}, 
          		#{item.ts60100,jdbcType=VARCHAR}, 
          		#{item.ts100144,jdbcType=VARCHAR}, 
          		#{item.ts144,jdbcType=VARCHAR}, 
          		#{item.tsBs,jdbcType=VARCHAR}, 
          		#{item.zts,jdbcType=VARCHAR}, 
          		#{item.jgzdkd,jdbcType=VARCHAR}, 
          		#{item.hs,jdbcType=VARCHAR}, 
          		#{item.xsdts,jdbcType=VARCHAR}, 
          		#{item.kcfts,jdbcType=VARCHAR}
          	from dual
          	)
          </foreach>
          ) cd
      </insert>

     MyBatis + Oracle 实现批量修改

    mapper 接口

    void batchUpdate(List<ASingleProject> list); 

     mapper.xml

     <update id="batchUpdate" parameterType="java.util.List">
      	 <foreach collection="list" index="index" item="item" open="begin" close=";end;" separator=";">
      	 	 update A_SINGLE_PROJECT
        <set>
          <if test="item.zjzmj != null">
            ZJZMJ = #{item.zjzmj,jdbcType=VARCHAR},
          </if>
          <if test="item.dsgd != null">
            DSGD = #{item.dsgd,jdbcType=VARCHAR},
          </if>
          <if test="item.dscs != null">
            DSCS = #{item.dscs,jdbcType=VARCHAR},
          </if>
          <if test="item.dxcs != null">
            DXCS = #{item.dxcs,jdbcType=VARCHAR},
          </if>
          <if test="item.jglx != null">
            JGLX = #{item.jglx,jdbcType=VARCHAR},
          </if>
          <if test="item.jcxs != null">
            JCXS = #{item.jcxs,jdbcType=VARCHAR},
          </if>
          <if test="item.dsJzmj != null">
            DS_JZMJ = #{item.dsJzmj,jdbcType=VARCHAR},
          </if>
          <if test="item.jkcJzmj != null">
            JKC_JZMJ = #{item.jkcJzmj,jdbcType=VARCHAR},
          </if>
          <if test="item.dxJzmj != null">
            DX_JZMJ = #{item.dxJzmj,jdbcType=VARCHAR},
          </if>
          <if test="item.zzJzmj != null">
            ZZ_JZMJ = #{item.zzJzmj,jdbcType=VARCHAR},
          </if>
          <if test="item.bgJzmj != null">
            BG_JZMJ = #{item.bgJzmj,jdbcType=VARCHAR},
          </if>
          <if test="item.syJzmj != null">
            SY_JZMJ = #{item.syJzmj,jdbcType=VARCHAR},
          </if>
          <if test="item.cfJzmj != null">
            CF_JZMJ = #{item.cfJzmj,jdbcType=VARCHAR},
          </if>
          <if test="item.rfJzmj != null">
            RF_JZMJ = #{item.rfJzmj,jdbcType=VARCHAR},
          </if>
          <if test="item.qtYfmj != null">
            QT_YFMJ = #{item.qtYfmj,jdbcType=VARCHAR},
          </if>
          <if test="item.dsgyts != null">
            DSGYTS = #{item.dsgyts,jdbcType=VARCHAR},
          </if>
          <if test="item.ts60100 != null">
            TS_60_100 = #{item.ts60100,jdbcType=VARCHAR},
          </if>
          <if test="item.ts100144 != null">
            TS_100_144 = #{item.ts100144,jdbcType=VARCHAR},
          </if>
          <if test="item.ts144 != null">
            TS_144 = #{item.ts144,jdbcType=VARCHAR},
          </if>
          <if test="item.tsBs != null">
            TS_BS = #{item.tsBs,jdbcType=VARCHAR},
          </if>
          <if test="item.zts != null">
            ZTS = #{item.zts,jdbcType=VARCHAR},
          </if>
          <if test="item.jgzdkd != null">
            JGZDKD = #{item.jgzdkd,jdbcType=VARCHAR},
          </if>
          <if test="item.hs != null">
            HS = #{item.hs,jdbcType=VARCHAR},
          </if>
          <if test="item.xsdts != null">
            XSDTS = #{item.xsdts,jdbcType=VARCHAR},
          </if>
          <if test="item.kcfts != null">
            KCFTS = #{item.kcfts,jdbcType=VARCHAR},
          </if>
        </set>
        where  SINGLEPROJECTID = #{item.singleprojectid,jdbcType=DECIMAL}
      	 </foreach>
      </update>

     

    展开全文
  • 一张表A,两个字段id,name 现在有5条数据 id,name 01,张三 02,李四 03,王五 04,赵六 05,田七 如何往name后面都加上一个@符号呢 求指教啊
  • Oracle批量修改

    千次阅读 2017-08-14 16:49:40
    问题:根据唯一字段编码修改其它字段,修改部分数据,数量在上万条数据,数据大,一开始就卡死了!笨办法,一条一条修改不知可年可月啊。其他方法个人原因实在是无能为力。如下:update ka02_new set aka065=1,aka...

    问题:根据唯一字段编码修改其它字段,修改部分数据,数量在上万条数据,数据大,一开始就卡死了!笨办法,一条一条修改不知可年可月啊。其他方法个人原因实在是无能为力。如下:

    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-2V';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-2W';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-2X';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-2Y';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-2Z';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-31';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-32';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-33';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-34';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-35';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-36';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-37';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-38';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-39';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3A';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3B';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3C';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3D';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3E';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3F';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3G';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3H';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3I';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3J';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3K';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3L';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3M';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3N';
    update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-3O';
    ....

    百度结果:百度了一下,很多解决方案,有的写的很粗糙,完全不理解,也许自己水平问题。有的是自己真的看不懂,个人水平跟不上。

    解决方案:最后的解决办法,还是老办法,就是新建一张临时表(表B:a_2017 ),把所修改的唯一字段编码和修改后的数据放在B表。sql大体如下(原表A:ka02_new ,唯一字段aka060 ,修改的字段分别为aka065 和aka166 ):

    update ka02_new b
       set b.aka065 =
           (SELECT a.aka065 FROM a_2017 a WHERE a.aka060 = b.aka060),
           b.aka166 =
           (SELECT a.aka166 FROM a_2017 a WHERE a.aka060 = b.aka060)
     WHERE b.aka060 in (SELECT a.aka060 FROM a_2017 a);

    最后,自己比较蒙圈的事,有啥好办法?

    展开全文
  • oracle批量修改,参数是数组,xml代码如下: &lt;update id="addPurchase" &gt; begin &lt;foreach collection="array" item="id" separator=";"&...

    oracle批量修改,参数是数组,xml中代码如下:

    <update id="addPurchase" >
    	   begin
    	   <foreach collection="array" item="id"  separator=";">
    	       update mds_purchase_list
    	       set
    	       state='已添加'
    	       where id=#{id}
    	   </foreach>
    	   ;end;
    	</update>
    void addPurchase(String[] ids);

    collection属性的值是数组的话,默认写array就可以。

     item不需要和mapper文件的参数一样,item的值必须和foreach中的值一样

    展开全文
  • 快速向oracle中批量插入数据

    千次阅读 2020-08-30 07:41:45
    oracle表主键为自增类型时,可采用sql脚本快速插入一些数据来达到丰富测试场景的目的,具体如下: begin for i in 1…5000: loop insert into “table_name” values (i,col_name2,col_name3…); commit; end loop...
  • 1.批量修改以xxx为前缀名的表名  declare  begin  for vcur in (select t.TABLE_NAME  from user_tables t  where t.TABLE_NAME like '...
  • 有一张表,数据量十万,有一个字段是空的,怎么按数据量的比例给这个字段设置不同的值,比如百分之三十设置1,...或者是批量给指定的数据量设置值,比如指定前叁万条设置成1,中间叁万条设置成2,剩下的四万条设置成3。
  • 一、前言前面一节,我们讲解了在MySQL下如何通过foreach批量插入数据,这一节,我们将介绍在Oracle批量插入数据,也有两种方式。二、案例完整的工程目录结构如下在Oracle下创建数据库表t_emp,并创建序列CREATE ...
  • <insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="false" flushCache="false"> INSERT INTO CMF_INV_BILLING_DETAIL ( ID, REGION_ID, KP_RQ, ...
  • 目录 Mysql批量插入: MySql批量修改: ...Oracle批量修改: Oracle批量删除: Oracle逻辑批量删除: Mysql批量插入: &lt;insert id="batchInsert" parameterType="java.util.L...
  • 这篇文章基础是在产品投产后生产会出现问题的情况下,对于用户基数百万级别的时候,对于问题数据的修改,不能一条语句全量的修改,需分段提交,存储块就能很好的解决这类问题,代码案例如下,替代脚本就可以使用,...
  • oracle批量update修改

    2021-07-15 10:42:45
    实现将"项目表""医保代码"批量修改成"linshi"表的"医保代码2" update 项目表 a set a.医保代码=(select b.医保代码2 from linshi b where a.项目代码=b.项目代码1) where exists(select 1 from linshi b where ...
  • Oracle实现批量修改的两种方法

    万次阅读 2018-04-26 20:40:40
    做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表,T2表还可以保存更新前的数据,方便...
  • mysql的很多常用字段:比如id,name,sort,description…在Oracle中被强制为关键字占用,所以在mysql导出的建表语句并不适用; mysql和oracle中字段类型不通用,这也导致mysql导出的建表语句并不使用oracle;...
  • 主要介绍了Oracle中多表关联批量插入,批量更新与批量删除操作,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 经常需要oracle中的所有的字段的类型更改为另外一个类型,可以考虑利用如下代码:此处的demo为将NVARCHAR2转为VARCHAR2类型并且字段长度保持不变。declare cursor c_tab is select * from user_tab_columns t where...
  • Oracle批量增加和修改

    2018-10-22 13:46:07
    1.批量增加的定义语法insert into (table表名) selectquery -- 批量增加 -- insert into DEPT(DEPTNO,DNAME,LOC)...2.批量修改的定义语法update (table表名) set (column列名)= selectquery -- 批量修改 ...
  • oracle关于批量修改表空间的方法

    千次阅读 2016-03-14 14:39:19
    单独修改表空间的语句: alter table 表名 move ...批量修改的语句: DECLARE  i_count INT := 0;  CURSOR c_mysql IS  SELECT 'alter table ' || table_name || ' move tablespace PMS_TB' mysql  FRO
  • Oracle、MySql批量修改

    2017-11-27 13:31:00
    1、Oracle里面批量修改某种格式的数据 eg:将表abc里面name字段里的内容增加'12' update abc set name= name || '12'; 2、MySql Mysql的拼接常用concat函数来完成; 在Mysql,同样可以使用字符串拼接的方法来...
  • Oracle-批量修改字段里面的值

    千次阅读 2018-04-22 17:42:28
    有个T_XZ_CASEINFO表的字段是caseidaaa10aaa12aaa13要改成kkk10kkk12kkk13UPDATE T_XZ_CASEINFO SET caseid = REPLACE(caseid, 'aaa', 'kkk');
  • Mybatis oracle 批量修改

    2020-11-27 14:42:20
    1、普通List直接传入 <update id="updateList" > <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";"> update T_USER <set>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,305
精华内容 15,722
关键字:

oracle中批量修改