• Oracle 序列号通过定时任务重置


    --创建序列号
    create sequence seq_settlemanage_inc
    minvalue 1 maxvalue 99999
    start with 1
    increment by 1
    nocache
    cycle;

    select seq_settlemanage_inc.nextval from dual;--获取下一序列值

    /*新建存储过程:每天序列0时从1起始*/

    CREATE OR REPLACE
    procedure reset_seq_settlemanage_inc AS
    n NUMBER(10);
    tsql VARCHAR2(100);
    begin
    EXECUTE IMMEDIATE 'select seq_settlemanage_inc.nextval from dual'
    INTO n;
    n := 99999-n;
    tsql := 'alter sequence seq_settlemanage_inc increment by ' || n;
    EXECUTE IMMEDIATE tsql;
    EXECUTE IMMEDIATE 'select seq_settlemanage_inc.nextval from dual'
    INTO n;
    tsql := 'alter sequence seq_settlemanage_inc increment by 1';
    EXECUTE IMMEDIATE tsql;
    end reset_seq_settlemanage_inc;

    --创建定时任务
    declare
    job number;
    BEGIN
    DBMS_JOB.SUBMIT(
    JOB => job, /*自动生成JOB_ID*/
    WHAT => 'reset_seq_settlemanage_inc;', /*需要执行的存储过程名称或SQL语句*/
    NEXT_DATE => sysdate+3/(24*60), /*初次执行时间-下一个3分钟*/
    INTERVAL => 'trunc(sysdate,''mi'')+2/(24*60)' /*每隔1分钟执行一次*/
    );
    commit;
    end;

    --查询定时任务
    select * from user_jobs where what ='reset_seq_settlemanage_inc;';

    --执行定时任务
    begin
    dbms_job.run(job_id);
    commit;
    end;
    --查看value是否等于0,如果等于0,任务不会自动执行,需把值job_queue_processes调大(0-1000)
    select value from v$parameter where name like '%job_queue_processes%'

    alter system set job_queue_processes =20;

  • 相关阅读:
    java 堆、栈、方法区/ 类变量、成员变量、局部变量
    native的详细用法
    《Java项目中classpath路径详解》
    事务四大特征:原子性,一致性,隔离性和持久性(ACID)
    Tomcat 配置文件server.xml详解
    linux下vim常用命令 (更新中...)
    #1572 小Hi与花盆
    leetcode 120. Triangle
    leetcode 174. Dungeon Game
    leetcode 368. Largest Divisible Subset
  • 原文地址:https://www.cnblogs.com/jrkl/p/15785060.html
Copyright © 2020-2023  润新知