用儲存過程重置序列

2021-08-29 17:29:56 字數 1140 閱讀 6187

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...