[oracle] 날짜 + 번호 일련번호 생성하기

Posted by 백창
2015. 12. 13. 03:23 개발/Oracle
반응형

# 개요


 Oracle에서 스케줄 등록 없이 날짜 + 숫자 와 같은 형식의 일련번호를 생성해보자.


# 코드


1
2
3
4
5
6
select 
    to_number(to_char(sysdate,'YYMMDD'|| nvl(to_char(max(substr(sales_no,7))),'00'))+1
from
    sales
where
    to_char(sales_date,'YYYYMMDD'= to_char(sysdate,'YYYYMMDD')    
cs


# 설명


 일련번호의 형태로 많이 사용하는 방식은 YYYYMMDD + 00001 와 같은 방식일 것이다. 


 이런 일련번호를 생성하기 위해서는 스케줄을 등록하여 하루가 지날때마다 초기 값을 지정해주는 방법이 있었다.


 개발 중인 프로그램의 특성상 DB서버를 항상 켜두는 것이 아니기 때문에 insert 시 계산하는 방법에 대해 고민해보았다.


 아직 학생이라 효율성의 측면까지는 생각하지 못하였고 동작은 잘 되고 있다.


# 전체 SQL 및 DB



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<insert id="addNewOrder" parameterType="com.nara.order.vo.AddOrder">
    <selectKey order="BEFORE" keyProperty="sales_no" resultType="int">
        select 
            to_number(to_char(sysdate,'YYMMDD'|| nvl(to_char(max(substr(sales_no,7))),'00'))+1
        from
            sales
         where
            to_char(sales_date,'YYYYMMDD'= to_char(sysdate,'YYYYMMDD')
    </selectKey>
    insert
        into sales
            (sales_no, cust_no, cost_sum, sales_date, pay, section)
        values
            (#{sales_no}, #{cust_no}, #{cost_sum}, sysdate, #{pay}, #{section})
</insert>
cs



# 동작 결과




반응형

'개발 > Oracle' 카테고리의 다른 글

오라클에서 시간을 기준으로 데이터 복구  (0) 2021.09.16
[oracle] DB Link  (0) 2016.04.07