--1 先建立序列
create sequence custBoxNoSeq increment by 1 start with 1 maxvalue 99999 cache 50 cycle;
--2 采用Oracle 的函数,生产5位的流水号
select to_char(sysdate,'yymmdd')||lpad(custBoxNoseq.nextval,5,'0') from dual
--3 写存储过程 让序列归零
CREATE OR REPLACE Procedure Auto_Reset_Sequence(seqName In Varchar2) Is
n Number;
Begin
Begin
Execute Immediate 'select ' || seqName || '.nextval from dual' into n;
Execute Immediate 'alter sequence ' || seqName || ' increment by -' || n;
Execute Immediate 'select ' || seqName || '.nextval from dual' into n;
Execute Immediate 'alter sequence ' || seqName || ' increment by 1 ';
End;
end Auto_Reset_Sequence;
--创建JOB(每天凌晨0点定时执行)
declare ResetSeqjob number;
begin
dbms_job.submit(
ResetSeqjob,
'Auto_Reset_Sequence(''custBoxNoSeq'');',
sysdate, --何时将运行这个工作
'TRUNC(sysdate+1)'); --何时这个工作将被重执行
commit;
end;
Oracle创建5位流水号
猜你喜欢
转载自www.cnblogs.com/xidianlxf/p/13389350.html
今日推荐
周排行