본문 바로가기
ㄱWORK, ETC

오라클 시퀀스 초기화 프로시저

by YuyU유유 2024. 10. 21.
728x90
반응형

--*1) 프로시저 생성

CREATE OR REPLACE PROCEDURE pr_reset_seq(seq_name IN VARCHAR2 )
IS
    seq_val NUMBER;
BEGIN
    -- 다음시퀀스 값을 seq_val 변수에 저장
    EXECUTE IMMEDIATE 'select ' || seq_name || '.nextval from dual' INTO seq_val;

    -- 현재의 시퀀스에서 저장된 값(seq_val)을 빼준다. 그럼 0으로 초기화 됨.
    EXECUTE IMMEDIATE 'alter sequence ' || seq_name || ' increment by -' || seq_val || ' minvalue 0';

    -- 0으로 초기화 된 시퀀스 값을 확인
    EXECUTE IMMEDIATE 'select ' || seq_name || '.nextval from dual' INTO seq_val;

    -- 지금부터는 1씩 증가되도록 시퀀스를 변경함.
    EXECUTE IMMEDIATE 'alter sequence ' || seq_name || ' increment by 1 minvalue 0';
END pr_reset_seq;

 

--*2) 프로시저 호출/사용
-- 이미 생성한 시퀀스 이름 : custno_seq
-- 현재 스퀀스 번호 확인
SELECT custno_seq.nextval FROM dual;

-- 프로시저 호출/사용 (초기화 실행)
EXECUTE pr_reset_seq('custno_seq');

[출처] 오라클 시퀀스 초기화 프로시저|작성자 깨비쌤

 

https://blog.naver.com/chapjjang/221962357054

 

오라클 시퀀스 초기화 프로시저

1. 시퀀스 삭제 : DROP SEQUENCE custno_seq; 2. 프로시저를 사용한 초기화 가. 프로시저 정의...

blog.naver.com

 

728x90
반응형