Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Re: managing sequences
"Norman Dunbar" <Norman_at_RE-MO-VE.BountifulSolutions.co.uk> wrote in message news:<pan.2003.10.28.08.52.16.410470_at_RE-MO-VE.BountifulSolutions.co.uk>...
> On Mon, 27 Oct 2003 17:36:44 +0100, Morgan GOARIN wrote:
>
> > Hi
> > I am using sequences in a PL/SQL stored procedure and I need to reset my
> > sequence. Does anybody know the way to re-initialize an Oracle sequence
> > without having to drop and recreate it ?
> > Thanks in advance
> > Morgan Goarin
>
>
> Here you are :
>
> http://www.jlcomp.demon.co.uk/faq/resetseq.html
>
> Enjoy !
>
>
> Cheers,
> Norman.
Hi, or modify it a bit so you can start at any given number:
CREATE OR REPLACE PROCEDURE reset_sequence (sequencename IN VARCHAR2
,startvalue in integer) as curr_val INTEGER; string varchar2(25); BEGIN EXECUTE IMMEDIATE 'alter sequence ' ||sequencename||' MINVALUE 0'; EXECUTE IMMEDIATE 'SELECT ' ||sequencename ||'.nextval FROM dual' INTO curr_val; curr_val := curr_val - startvalue + 1; if curr_val < 0 then string := ' increment by '; curr_val:= abs(curr_val); else string := ' increment by -'; end if; EXECUTE IMMEDIATE 'alter sequence ' ||sequencename||string||curr_val ; EXECUTE IMMEDIATE 'SELECT ' ||sequencename ||'.nextval FROM dual' INTO curr_val; EXECUTE IMMEDIATE 'alter sequence ' ||sequencename||' increment by 1';END reset_sequence;
be carefull using this procedure in a production environment though....
Frans Received on Wed Oct 29 2003 - 03:18:48 CST