oracle批量操作

2021-09-02 11:26:18 字數 1187 閱讀 3119

-------批量新增---------

declare

cursor cur is

select a.xh, a.zyh, a.bjh, a.xm, a.xbm, a.sfzjh, a.csrq

from xsxxgl_xsjbxx a

where not exists (select 1 from zs_xsxx2 b where a.xh = b.xsid); --定義游標

type rec is table of cur%rowtype; --定義型別

recs rec;

begin

open cur; --開啟游標

while (true) loop

--迴圈條件

fetch cur bulk collect --取游標裡的值

into recs limit 100; --提交條件,每100條提交

forall i in 1 .. recs.count --這個是個計數器,用來確保提交的條數,也是迴圈

insert into zs_xsxx2

(xsid, bdzy, bjdm, xm, xb, sfzh, csrq)

values

(recs(i).xh,

recs(i).zyh,

recs(i).bjh,

recs(i).xm,

recs(i).xbm,

recs(i).sfzjh,

recs(i).csrq); --插入目標表

commit; --提交

exit when cur%notfound; --游標結束條件

end loop; --停止迴圈

close cur; --關閉游標

end;

-----更新字段值---------

update (select t1.bjdm a, t2.bjh b, t1.bdzy c, t2.zyh d

from zs_xsxx2 t1, xsxxgl_xsjbxx t2

where t1.xsid = t2.xh)

set a = b, c = d;

---批量新增

這是把a表中不存在b表的資料查詢出來並且插入b表;

---更新字段

這是更新b表的兩個字段值(即同步b表,使得b表的這兩個字段值和a表的相等)

oracle批量更新操作

專案問題是這樣的,有一張表tb user market使用者記錄繫結使用者,一開始沒有欄位system date,後來新加的,該欄位使用者記錄使用者繫結的時間 還有一張表tb log user market 裡面記錄的是使用者的繫結歷史資訊,可能有重複的使用者記錄,即使用者先繫結後解綁又繫結的情況,...

oracle批量提交

create or replace procedure p cust bossorder sync is 存放t iiss boss order back是否存在 v tablecount number 2 0 定義變數 type v bossorder row is table of t cust...

Oracle批量更新

需求 將t2 t statbuf 表中id和t1 t mt 表相同的記錄更新進t1表。1.錯誤的寫法 1update table name t1 set a,b,c select a,b,c from table name 2 t2 where t1.a t2.a 這種寫法,會更新t1表中的所有行 ...