zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

oracle批量新增更新数据详解数据库

Oracle数据库批量数据 详解 更新 新增
2023-06-13 09:20:12 时间

本博客介绍一下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) 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/5065.html

oracle