復制代碼 代碼如下:
 
declare 
n number(10); 
v_startnum number(10):=10000001;--從多少開始 
v_step number(10):=1;--步進 
tsql varchar2(200); 
v_seqname varchar2(200):='MIP_JF_SEQUENCE';--序列名 
begin 
execute immediate 'select '||v_seqname||'.nextval from dual' into n; 
n:=v_startnum-n-v_step;--從10000001開始 
tsql:='alter sequence '||v_seqname||' increment by '|| n; 
execute immediate tsql; 
execute immediate 'select '||v_seqname||'.nextval from 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 with 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> 
復制代碼 代碼如下:
 
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; 
execute immediate tsql; 
execute immediate 'select '||v_seqname||'.nextval from dual' into n; 
tsql:='alter sequence '||v_seqname||' increment by 1'; 
execute immediate tsql; 
end seq_reset; 
新聞熱點
疑難解答