declare
n number(10);
v_startnum number(10):=10000001;--从多少开始
v_step number(10):=1;--步进
t
SQL v
Archar2(200);
v_seqn
ame
VARchar2(200):='MIP_JF_SEQUENCE';--序列名
be
gin execute immediate 'select '||v_seqname||'.nextval
From dual' into n;
n:=v_startnum-n-v_ste
p;--从10000001开始
tsql:='alter sequence '||v_seqname||' increment by '|| n;
execute immediate tsql;
execute immediate 'select '||v_seqname||'.nextval f
rom dual' into n;
tsql:='alter sequence '||v_seqname||' increment by '||v_step;
execute immediate tsql;
end;
SQL> create sequence seq_1 increment by 1 start w
ITh 1 maxvalue 999999999;
序列已创建。
SQL> create or replace
PRocedure seq_reset(v_seqname varchar2) as
2 n number(10);
3 tsql varchar2(100);
4 begin
5 execute immediate 'select '||v_seqname||'.nextval from dual' into n;
6 n:=-(n-1);
7 tsql:='alter sequence '||v_seqname||' increment by '|| n;
8 execute immediate tsql;
9 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>