Issue is I'm unable to reset the sequence back to '1'. I Have created the sequence as below...
DROP SEQUENCE TEST_SEQ;
CREATE SEQUENCE TEST_SEQ MINVALUE 1 START WITH 1 INCREMENT BY 50;
when doing 'nextval', the output is 1.
SELECT TEST_SEQ.NEXTVAL FROM DUAL; --> output is '1'
Below procedure is from this community which I am using for resetting the sequence
CREATE OR replace PROCEDURE RESET_SEQ(p_seq_name IN VARCHAR2)
IS
l_val NUMBER;
l_minvalue user_sequences.min_value%TYPE;
BEGIN
SELECT min_value
INTO l_minvalue
FROM user_sequences
WHERE sequence_name = Upper(p_seq_name);
EXECUTE IMMEDIATE 'SELECT '||p_seq_name||'.NEXTVAL FROM DUAL' INTO l_val;
l_val := l_val - l_minvalue;
EXECUTE IMMEDIATE 'ALTER SEQUENCE '||p_seq_name||'INCREMENT BY -'||l_val||
'MINVALUE '||l_minvalue;
EXECUTE IMMEDIATE 'SELECT '||p_seq_name||'.NEXTVAL FROM DUAL' INTO l_val;
EXECUTE IMMEDIATE 'ALTER SEQUENCE '||p_seq_name||'INCREMENT BY 50 MINVALUE '
||l_minvalue;
END;
/
BEGIN
RESET_SEQ('TEST_SEQ');
END;
/
After resetting the sequence when I check nextvalue, I am getting the output as 51. But I need the output as 1.
SELECT TEST_SEQ.NEXTVAL FROM DUAL; --> output is '51'.
Only when I drop and recreate the sequence I am able to get the nextvalue as '1'.
Please help me in modifying the above procedure so that my output is '1'.