[ORACLE] 시퀀스 값 초기화
Posted on 2021. 6. 15. 16:16
Filed Under DB
DROP SEQUENCE 하고 새로 만들면 쉽겠지만 권한문제로 DROP이 불가할때 사용할 수 있는 방법
--------------------------------------------------------------
--순번 1으로 초기화
DECLARE
P_CURRVAL_NUM NUMBER;
BEGIN
-- 1)시퀀스 현재값 얻기(초기화 할거니깐 .NEXTVAL 해버리자)
SELECT 대상SEQ.NEXTVAL-1 INTO P_CURRVAL_NUM FROM DUAL;
DBMS_OUTPUT.PUT_LINE('순번초기화 : '||P_CURRVAL_NUM);
-- 2)증감값을 [-현재값]으로 조정
EXECUTE IMMEDIATE 'ALTER SEQUENCE 대상SEQ INCREMENT BY -'||P_CURRVAL_NUM;
-- 3)증감 실행
SELECT 대상SEQ.NEXTVAL INTO P_CURRVAL_NUM FROM DUAL;
--4)증감값 원복
EXECUTE IMMEDIATE 'ALTER SEQUENCE 대상SEQ INCREMENT BY 1';
--결과확인
SELECT 대상SEQ.CURRVAL INTO P_CURRVAL_NUM FROM DUAL;
DBMS_OUTPUT.PUT_LINE('-> '||P_CURRVAL_NUM);
END;
DBMS_OUTPUT 출력 창 보기: 메뉴 [보기] > DBMS 출력 > (출력창의)[+]버튼으로 Target DB설정
반응형