Oracle利用序列定時增長每天生成新序列號


1.定義序列

-- Create sequence 
create sequence BCM_GLOABAL_ID
minvalue 0
maxvalue 999999999999999999
start with 1
increment by 1
cache 20;

2.編寫存儲過程

create or replace procedure SEQ_RESET_NEXT AS
  n    NUMBER;
  
Begin
 --BCM_GLOABAL_ID
  Begin
    Execute Immediate 'alter sequence BCM_GLOABAL_ID minvalue 0';
    Execute Immediate 'select BCM_GLOABAL_ID.nextval from dual'
      Into n;
    Execute Immediate 'alter sequence BCM_GLOABAL_ID increment by -' || n;
    Execute Immediate 'select BCM_GLOABAL_ID.nextval from dual'
      Into n;
     --Execute Immediate 'alter sequence BCM_GLOABAL_ID minvalue 1';
    Execute Immediate 'alter sequence BCM_GLOABAL_ID increment by 1 ';
  End;
End;

 

3.編寫定時任務調用存儲過程

begin
  sys.dbms_job.submit(job => :job,
                      what => 'SEQ_RESET_NEXT;',
                      next_date => to_date('20-10-2020 01:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'TRUNC(sysdate) + 1 +1/(24)');
  commit;
end;
/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM