oracle批量新增更新數據
阿新 • • 發佈:2019-05-12
man define 字段 批量更新 uuid數 tps 處理 使用 例子
本博客介紹一下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)
oracle批量新增更新數據