oracle重置序列從0開始遞增1
oracle序列創(chuàng)建以后,如果想重置序列從 0 開始,逐漸遞增1,可以采用如下存儲過程:
create or replace procedure reset_seq( p_seq_name in varchar2 ) is l_val number; begin execute immediate 'select ' || p_seq_name || '.nextval from dual' INTO l_val; execute immediate 'alter sequence ' || p_seq_name || ' increment by -' || l_val || ' minvalue 0'; execute immediate 'select ' || p_seq_name || '.nextval from dual' INTO l_val; execute immediate 'alter sequence ' || p_seq_name || ' increment by 1 minvalue 0'; end;
存儲過程創(chuàng)建以后,調(diào)用該存儲過程,參數(shù)是要重置的序列名稱:
call reset_seq(‘test_seq’);
使用下面的SQL語句查詢需要重置的序列:
SELECT a.sequence_name 序列名稱, a.min_value 序列最小值, to_char(to_number( a.max_value)) 序列最大值, a.last_number 序列當(dāng)前值, CASE a.last_number WHEN 1 THEN '--不需要重置;' ELSE 'CALL seq_reset(''' || a.sequence_name || ''');' END 重置序列腳本, 'DROP SEQUENCE ' || a.sequence_name 刪除序列腳本, 'RENAME ' || a.sequence_name || ' TO {newname}' 重命名腳本 FROM USER_SEQUENCES a WHERE a.last_number<>1 ORDER BY a.sequence_name ASC;
到此這篇關(guān)于oracle重置序列的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle數(shù)據(jù)庫服務(wù)器修改操作系統(tǒng)時(shí)間的注意事項(xiàng)詳解
在本篇文章里小編給大家整理的是一篇關(guān)于Oracle數(shù)據(jù)庫服務(wù)器修改操作系統(tǒng)時(shí)間的注意事項(xiàng)詳解,需要的朋友們可以參考下。2020-03-03Linux中Oracle的sqlplus下退格和Del鍵無效的問題解決
這篇文章主要介紹了Linux中Oracle的sqlplus下退格和Del鍵無效的問題解決,修復(fù)使用時(shí)在命令行界面下產(chǎn)生亂碼的問題,需要的朋友可以參考下2015-12-12Oracle數(shù)據(jù)庫批量變更字段類型的實(shí)現(xiàn)步驟
我有個(gè)項(xiàng)目使用Oracle數(shù)據(jù)庫,運(yùn)行幾年后數(shù)據(jù)量較大,需要對數(shù)據(jù)庫做一次優(yōu)化,其中有些字段類型類型需要調(diào)整,這里分享一下實(shí)現(xiàn)步驟,感興趣的朋友可以參考下2024-02-02Oracle數(shù)據(jù)庫表空間超詳細(xì)介紹
Oracle數(shù)據(jù)庫的數(shù)據(jù)存放在表空間中,表空間是一個(gè)邏輯的概念,它是由數(shù)據(jù)文件組成,表空間大小由數(shù)據(jù)文件的數(shù)量和大小決定,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫表空間的相關(guān)資料,需要的朋友可以參考下2023-05-05