sql> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;
序列已建立。
sql> create or replace procedure seq_reset(v_seqname varchar2) as
n number(10);
tsql varchar2(100);
begin
execute immediate 'select '||v_seqname||'.nextval from dual' into n;
n:=-(n-1);
tsql:='alter sequence '||v_seqname||' increment by '|| n;--讓序列一次遞增-n,實現歸0
execute immediate tsql;
execute immediate 'select '||v_seqname||'.nextval from dual' into n;
10 tsql:='alter sequence '||v_seqname||' increment by 1';
11 execute immediate tsql;
12 end seq_reset;
13 /
過程已建立。
sql> select seq_1.nextval from dual;
nextval
---------
2 sql> /
nextval
---------
3 sql> /
nextval
---------
4 sql> /
nextval
---------
5 sql> exec seq_reset('seq_1');
pl/sql 過程已成功完成。
sql> select seq_1.currval from dual;
currval
---------
1 sql>
這樣可以通過隨時呼叫此過程,來達到序列重置的目的。
利用儲存過程重置序列
工作中用到訂單號需要每天從1累加。通過序列提供訂單號,每天通過儲存過程來重置改序列從1開始 建立序列 create sequence order seqid minvalue 0 maxvalue 9999 start with 1 increment by 1 cache 20 重置的儲存過程 c...
儲存過程示例 用儲存過程分頁
create proc propage pageid int pagesize int asbegin if pageid 1 begin set rowcount pagesize select from test order by id endelse begin declare no1 int...
oracle 序列重置
問題一 如何重置oracle序列 oracle序列建立以後,如果想重置序列從 0 開始,逐漸遞增1,可以採用如下儲存過程 create or replace procedure reset seq p seq name in varchar2 isl val number begin execute...