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 低權(quán)限數(shù)據(jù)庫賬戶得到 OS 訪問權(quán)限 提權(quán)利用
大概意思就是說,如果 ORACLE 服務(wù)是用 administrator 賬戶啟動的,你只要有一個具有 resource 和 connect 權(quán)限的數(shù)據(jù)庫賬戶,就能利用 metasploit 的 smbrelay 功能,本地搭建一個 SMB 欺騙服務(wù)器, 來得到系統(tǒng)的訪問權(quán)限。2009-06-06
Oracle 數(shù)據(jù)顯示 橫表轉(zhuǎn)縱表
橫表轉(zhuǎn)縱表亦可用與decode意義相似的case語句實現(xiàn),原理同該語句,這里不再過多描述。2009-07-07
如何解決ORA-01843與NLS_DATE_FORMAT問題
本文將詳細介紹如何解決ORA-01843與NLS_DATE_FORMAT問題,需要的朋友可以參考下2012-11-11
Oracle 阻塞(blocking blocked)介紹和實例演示
這篇文章主要介紹了Oracle 阻塞(blocking blocked)介紹和實例演示,如何定位當(dāng)前系統(tǒng)有哪些阻塞,到底誰是阻塞者,誰是被阻塞者,本文對此給出了描述并做了相關(guān)演示,需要的朋友可以參考下2014-09-09
詳解azure 云上準(zhǔn)備oracle11g的vnc安裝環(huán)境
本篇文章主要介紹了詳解azure 云上準(zhǔn)備oracle11g的vnc安裝環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03
Oracle9i的全文檢索技術(shù)開發(fā)者網(wǎng)絡(luò)Oracle
Oracle9i的全文檢索技術(shù)開發(fā)者網(wǎng)絡(luò)Oracle...2007-03-03

