本博客是對之前寫的博客Oracle批量新增更新數據的補充,oracle的知識真是多,其實要學精任何一門知識都是要花大量時間的,正所謂:
學如逆水行舟,不進則退
先介紹oracle sequence的一些知識,sequence顧名思義,就是創建一個序列,這個序列沒調一次就會自動加,利用它這個特性,我們顯然可以用來寫一些批量腳本
(1)sequence用法
oracle sequence的基本語法,這里只做簡單介紹
創建sequence
create sequence [序列名]
minvalue [最小值,eg:1]
nomaxvalue | maxvalue [最大值,eg:9999999]
start with [開始值,eg:1]
increment by [每次遞增:eg:1]
nocycle // 一直累加,不循環
no cache |cache [緩存值,eg:10];
更新sequence
update sequence [序列名]
minvalue [最小值,eg:1]
nomaxvalue | maxvalue [最大值,eg:9999999]
increment by [每次遞增:eg:1]
nocycle // 一直累加,不循環
no cache |cache [緩存值,eg:10];
ps:注意start with不能update,只能drop sequence [序列名],然后再create,序列使用是用序列名.nextval
(2)sequence用於批量
這里舉例介紹sequence用於批量更新新增的案例
業務場景:要按某個數值為起點,批量新增數據
先場景sequence:
create sequence seq_t_handle_info
minvalue 1
maxvalue 999999999999999999999999999
start with 624203
increment by 1
cache 20;
commit;
編寫批量腳本:
insert into t_stuff_dir_related
(seq, dir_seq, create_date, create_man, stuff_id, t_item)
select sys_guid(),
seq_t_handle_info.nextval,
sysdate,
'admin',
b.rs_id,
a.t_item
from t_itm_define a
where a.is_valid =1