用存儲(chǔ)過(guò)程重置序列
用存儲(chǔ)過(guò)程重置序列
SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;
序列已創(chuàng)建。
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;--讓序列一次遞增-N,實(shí)現(xiàn)歸0
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 /
過(guò)程已創(chuàng)建。
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 過(guò)程已成功完成。
SQL> select seq_1.currval from dual;
CURRVAL
---------
1
SQL>
這樣可以通過(guò)隨時(shí)調(diào)用此過(guò)程,來(lái)達(dá)到序列重置的目的。
SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;
序列已創(chuàng)建。
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;--讓序列一次遞增-N,實(shí)現(xiàn)歸0
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 /
過(guò)程已創(chuàng)建。
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 過(guò)程已成功完成。
SQL> select seq_1.currval from dual;
CURRVAL
---------
1
SQL>
這樣可以通過(guò)隨時(shí)調(diào)用此過(guò)程,來(lái)達(dá)到序列重置的目的。
posted on 2006-04-23 13:21 Java Fly 閱讀(838) 評(píng)論(1) 編輯 收藏 所屬分類: Oracle base