• oracle批量新增更新数据


    本博客介绍一下Oracle批量新增数据和更新数据的sql写法,业务场景是这样的,往一张关联表里批量新增更新数据,然后,下面介绍一下批量新增和更新的写法:

    批量新增数据 对于批量新增数据,介绍两种方法

    (1)命令窗口执行的 一种需要在命令窗口执行的,Oracle数据库可以使用sqlplus或者plsql developer客户端软件

    可以使用sqlplus工具登录,进入数据库

    sqlplus / as sysdba
    

    查看用户,可以用命令

    show parameter db_name
    
    

    plsql developer也可以使用,登录之后,选择文件(File)->新建(New)->命令窗口(Command Window) 假如要往表格t里写1000条数据,可以用如下批处理命令:

    begin 
    	for i in 1 .. 1000
    	loop
    		execute immediate
    		'insert into t values('|| i ||')';
    	end loop;
    	commit;
    end;
    

    ps:这个commit提交事务,放的位置也是有区别的,具体可以参考我之前的博客,Oracle体系结构学习笔记里面有涉及到

    (2) SQL窗口执行的 然后介绍sql窗口执行的方法,因为命令窗口执行有时候觉得不太便利,所以可以使用sql窗口的方法,语法大致为:

    insert into [表格名称](字段名称1,字段名称2,...) [查询SQL]
    

    给个例子,sys_guid()生成uuid数据,sysdate获取当前时间,然后批量写数据,根据查询sql来

    insert into t_stuff_dir_related
      (seq, dir_seq, create_date, create_man, stuff_id, t_item)
      select sys_guid(),
             'uuidss',
             sysdate,
             'admin',
             b.rs_id,
             a.t_item
        from t_itm_define a
      where a.is_valid =1
    

    批量更新数据

    对于批量更新的和批量新增方法类型,同样可以用命令窗口和sql窗口两种方法

    (1)命令窗口执行的

    同样可以用如下批处理命令:

    begin 
    	for i in 1 .. 1000
    	loop
    		execute immediate
    		'${更新SQL}';
    	end loop;
    	commit;
    end;
    

    (1)SQL窗口执行的

    批量更新加了where条件就可以

     update t_itm_rcv_stuff stuff
        set stuff.dir_seq = '${目录SEQ}', stuff.dir_name = '${目录名称}'
      where stuff.t_item in
            (select a.t_item
               from t_itm_define a)
    
    
  • 相关阅读:
    php提示undefined index的几种解决方法
    划分树(poj2104)
    ACM-ICPC 2018 南京赛区网络预赛B
    AC Challenge(状压dp)
    UVALive5966(bfs)
    UVALive
    STL next_permutation 算法原理和实现
    凸包算法
    poj1873(枚举+凸包)
    CodeForces
  • 原文地址:https://www.cnblogs.com/mzq123/p/10850729.html
Copyright © 2020-2023  润新知