Oracle创建5位流水号

--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;

猜你喜欢

转载自www.cnblogs.com/xidianlxf/p/13389350.html