반응형

솔루션 개발을 하다 보면, 번호를 채번해야 하는 경우가 종종 있다. 그래서, 사용하는 것이 DB에서 시퀀스(SEQUENCE) 번호를 채번하여 가져온다.

 

시퀀스(SEQUENCE) 번호 채번 예제

아래는 시퀀스(SEQUENCE)의 예시 쿼리문을 가져왔다.

CREATE SEQUENCE YG.SEQ_TEST #1
START WITH 21 #2
INCREMENT BY 1 #3
MINVALUE 1 #4
MAXVALUE 10000000000000000000 #5
NOCYCLE #6
CACHE 20 #7
NOORDER #8

 

#1 : CREATE SEQUENCE로 먼저 시작하고, YG는 DB의 스키마명, SEQ_TEST는 시퀀스(SEQUENCE) 명이다.

 

#2 : START WITH는 시퀀스(SEQUENCE)의 시작 값을 의미한다.

 

#3 : INCREMENT BY는 시퀀스(SEQUENCE) 번호를 채번할 때, 몇 씩 증가할건지에 대한 증가값이다.

 

#4 : MINVALUE는 최솟값이다.

 

#5 : MAXVALUE는 최댓값이다.

 

#6 : NOCYCLE은 시퀀스(SEQUENCE) 번호가 MAXVALUE까지 도달하면 다시 시작값으로 돌아갈건지에 대한 설정하는 곳이다.

 

#7 : CACHE는 시퀀스(SEQUENCE) 번호를 채번할 때, 쿼리를 돌려 번호를 가져올 것인지 아니면 CACHE에 저장하여 바로 가져올 것인지 정하는 곳이다. CACHE 20은 채번한 시퀀스(SEQUENCE) 번호를 기준으로 + 20 만큼 CACHE에 저장한다. CACHE를 사용하면 시퀀스(SEQUENCE) 번호를 채번하여 가져올 때 속도가 빨라진다.

 

#8 : NOORDER는 요청 순서에 따라 시퀀스(SEQUENCE) 번호를 채번할건지에 대한 것을 설정하는 곳이다. ORDER를 사용하면 시스템에 부하가 생겨 속도가 느려진다.

 

시퀀스(SEQUENCE) 번호 채번 사용 방법

 

시퀀스(SEQUENCE) 번호 채번하는 방법은 NEXTVAL을 사용하면 된다.

 

아래의 쿼리를 보면, SELECT 문을 이용해서 시퀀스명.NEXTVAL을 하면 번호가 채번이 된다. 여기서, 한 번 채번한 번호는 다시 그 전 번호로 되돌릴 수 없다.

SELECT SEQ_TEST.NEXVAL FROM DUAL;

 

더 나아가, 시퀀스(SEQUENCE) 번호를 채번하여 자릿수를 맞춰 채번하려면 LPAD() 함수를 사용하면 된다.

아래의 쿼리처럼, LPAD(시퀀스번호 채번, 자릿수, 채울 문자열)로 하면 시퀀스(SEQUENCE) 번호에 왼쪽에서 부터 0을 채워 넣어 16자리를 만들어 출력하게 된다.

SELECT LPAD(SEQ_TEST.NEXTVAL,16,'0') AS TEMP FROM DUAL
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기