오라클 시쿼스 생성방법 질문드립니다. 0 2 1,349

by 겨울나무 [PL/SQL] [2015.09.02 17:36:18]


CREATE SEQUENCE ID
            INCREMENT BY 1
            START WITH 1
            MAXVALUE 999999999
            NOCYCLE
            NOCACHE

시퀀스를 생성하였습니다.

근데 형식이

컬럽이 20자리구요

기관코드(4자) + 날짜(TO_CHAR(sysdate,'YYYYMMDD')(8자) + 시퀀스(8자) 이렇게 생성이 되어야 합니다.

select 'A000' || TO_CHAR(sysdate,'YYYYMMDD' || ID.nextval from dual;

하면...

결과값이 A000201509021 ~ A00020150902100

이렇게 생성이 되네요

중간에 || ' 0000000' 이 들어가야 되는데 시퀀스가 2자리 넘거가버리면 20자를 초과 하드라구요

0이 줄어들면서 시퀀스 생성을 어떻게 해야 되나요?

그리고 시퀀스 매일매일 초기화도 시켜야 되는데 어떤방법이 있나요?

by 아발란체 [2015.09.02 17:43:21]

LPAD 함수 쓰시면 됩니다.

LPAD(ID.nextval, 5, '0') 식으로 쓰면,

ID.NEXTVAL 값이 1이면 00001로

ID.NEXTVAL 값이 10이면 00010로

ID.NEXTVAL 값이 100이면 00100 형태로 값을 받습니다.

 

스퀸스 매일 자동으로 초기화 하는 옵션은 따로 없는 것으로 알고 있습니다.

오라클 JOB 등록하여 매일 정해진 시간에 초기화 되도록 해야합니다.


by 임상준 [2015.09.02 18:06:09]

시퀀스 START VALUE 를 초기화 시킬 수 있는 방법은 없는걸로 알고 있습니다.

그룹 별 넘버링을 할 때는 시퀀스가 적합하지 않을 것 같습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입