本部落格是對之前寫的部落格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
oracle應用之sql小寫
本人不喜歡在sql裡面大小寫混合在一起,每次看到別人的sql,總是要轉換為小寫,如以下sql with t as select date 2014 05 06 time1,1 type,100 times from dual union all select date 2014 05 06 2,20...
在mysql中模擬oracle的sequence
為了在mysql中實現類似於oracle的sequence的功能,要進行以下步驟 1 建立乙個只有乙個資料行的資料表 create table t sequence id int unsigned not null insert into t sequence values 0 2 用以下操作檢索出...
Oracle高階應用之合併MERGE
為了方便大家學習和測試,所有的例子都是在oracle自帶使用者scott下建立的。merge是什麼?這麼厲害的東西你都不知道,你這學生是怎麼學習的?老師不給你講你就不會自學了嗎?哎!可憐天下老師心啊,罷了罷了,老師現在給你好好講一下吧。merge是oracle9i新增的語法,中文意思是 合併 那合併...