• Oracle序列重置


    Oracle 中的序列我们一般用来生成流水号,所以需要进行重置(如每天凌晨重置一次),我们虽然可以通过重新编译的方式重置序列,可是这种方法会有弊端,比如导致与该序列相关的存储过程或函数失效等等,需要重新编译;于是就需要一种不编译也可以重置序列的方法——

     这种方式,不用删除,利用步长参数,先查出sequence的nextval,记住,把递增改为负的这个值(反过来走),然后再改回来。

    假设需要修改的序列名:seq_name

    1、select seq_name.nextval from dual; //假设得到结果5656

    2、 alter sequence seq_name increment by -5655; //注意是-(n-1)

    3、 select seq_name.nextval from dual;//再查一遍,走一下,重置为1了

    4、  alter sequence seq_name increment by 1;//还原

    可以写个存储过程,以下是完整的存储过程,然后调用传参即可: 

    create or replace procedure seq_reset(v_seqname varchar2) as n number(10);
    tsql varchar2(100);
    begin
    execute immediate 'select '||v_seqname||'.nextval from dual' into n; 1
    n:=-(n-1);
    tsql:='alter sequence '||v_seqname||' increment by '|| n; 2
    execute immediate tsql;
    execute immediate 'select '||v_seqname||'.nextval from dual' into n; 3
    tsql:='alter sequence '||v_seqname||' increment by 1'; 4
    execute immediate tsql;
    end seq_reset;
  • 相关阅读:
    SDOI2008 沙拉公主的困惑
    HNOI2004 L语言
    SDOI2008 sue的小球
    HNOI2011 XOR和路径
    BJWC2011 元素
    CQOI2013 新nim游戏
    HNOI2007 紧急疏散
    sublime text 3将px换算为rem的插件的安装及使用
    移动端知识
    登录拦截逻辑
  • 原文地址:https://www.cnblogs.com/bulrush/p/7726993.html
Copyright © 2020-2023  润新知