Last active
August 29, 2015 14:09
-
-
Save JohnZavyn/0f2386fa44d31c8b3f62 to your computer and use it in GitHub Desktop.
Reset An Oracle SEQUENCE
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SET DEFINE OFF; | |
SET SERVEROUTPUT ON; | |
SET FEEDBACK OFF; | |
--/ | |
DECLARE | |
newStartNumber INTEGER; | |
oldStartNumber INTEGER; | |
difference INTEGER; | |
BEGIN | |
EXECUTE IMMEDIATE 'SELECT NVL(MAX(EXAMPLE_ID) + 1, 1) FROM TABLE_EXAMPLES' INTO newStartNumber; | |
EXECUTE IMMEDIATE 'SELECT EXAMPLES_SEQ.NEXTVAL FROM DUAL' INTO oldStartNumber; | |
difference := newStartNumber - oldStartNumber; | |
EXECUTE IMMEDIATE 'DROP SEQUENCE EXAMPLES_SEQ'; | |
EXECUTE IMMEDIATE | |
'CREATE SEQUENCE EXAMPLES_SEQ' || | |
' MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 ' || | |
'START WITH ' || newStartNumber || | |
' NOCACHE NOORDER NOCYCLE'; | |
EXECUTE IMMEDIATE 'GRANT SELECT ON EXAMPLES_SEQ TO TABLE_U'; | |
DBMS_OUTPUT.PUT_LINE('Reset SEQUENCE EXAMPLES_SEQ.NEXTVAL = ' || newStartNumber || ' - changed by (' || difference || ')'); | |
EXCEPTION WHEN OTHERS THEN | |
DBMS_OUTPUT.PUT_LINE('Reset SEQUENCE `EXAMPLES_SEQ` ERROR: ' || SQLERRM); | |
END; | |
/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment