序列创建

  1. create sequence SEQ_QRCODE
  2. minvalue 1
  3. maxvalue 999999
  4. start with 12
  5. increment by 1
  6. cache 10;

创建重置序列的存储过程

  1. create or replace procedure clear_seq is
  2. n number;
  3. tsql varchar2(250);
  4. begin
  5. select seq_qrcode.nextval into n from dual ;
  6. n:=-(n-1);
  7. tsql:='alter sequence seq_qrcode increment by '||n;
  8. execute immediate tsql;
  9. select seq_qrcode.nextval into n from dual;
  10. tsql:='alter sequence seq_qrcode increment by 1';
  11. execute immediate tsql;
  12. commit;
  13. end clear_seq;

创建定时器

  1. begin
  2. sys.dbms_job.submit(job => :job,
  3. what => 'CLEAR_SEQ;',
  4. next_date => to_date('27-12-2020', 'dd-mm-yyyy'),
  5. interval => 'trunc(sysdate)+1');
  6. commit;
  7. end;

定时器的定时间隔

  1. 定时的时间间隔:
  2. 1)、 每秒钟执行
  3. Interval => TRUNC(sysdate + 1 / (24*60*60)
  4. 1)、 每分钟执行
  5. Interval => TRUNC(sysdate,'mi') + 1 / (24*60)
  6. 2)、 每天定时执行
  7. 例如:每天的凌晨2点执行
  8. Interval => TRUNC(sysdate) + 1 +2 / (24)
  9. 3)、 每周定时执行
  10. 例如:每周一凌晨2点执行
  11. Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天
  12. 4)、 每月定时执行
  13. 例如:每月1日凌晨2点执行
  14. Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24
  15. 5)、 每季度定时执行
  16. 例如每季度的第一天凌晨2点执行
  17. Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24
  18. 6)、 每半年定时执行
  19. 例如:每年71日和11日凌晨2
  20. Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
  21. 7)、 每年定时执行
  22. 例如:每年11日凌晨2点执行
  23. Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24