Oracle中一般将自增sequence重置为初始1时,都是删除再重建,这种方式有很多弊端,依赖它的函数和存储过程将失效,需要重新编译。

不过还有种巧妙的方式,不用删除,利用步长参数,先查出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;
n:=-(n-1);
tsql:='alter sequence '||v_seqname||' increment by '|| n;
execute immediate tsql;
execute immediate 'select '||v_seqname||'.nextval from dual' into n;
tsql:='alter sequence '||v_seqname||' increment by 1';
execute immediate tsql;
end seq_reset;

最新文章

  1. Kali Linux 命令集
  2. JAVA之执行cmd命令
  3. SQL Server 跨库连接
  4. iOS 十六进制的相加取反
  5. jquery mini ui 学习
  6. PIL库 (Pillow)
  7. 剑指offer32 整数中1出现的次数(从1到n整数中1出现的次数)
  8. 获得span里面价值(在特殊情况下 )
  9. openstack-kilo--issue(十二)openstack-keystone和httpd服务同时占用35357和5000
  10. 数组的重排序方法reverse()和sort()
  11. MySQL如何插入测试数据
  12. jvm类加载器和双亲委派模型
  13. Java几种建立实例的方法
  14. Python多线程案例
  15. 初识Djiango
  16. DAY4(PYTHON)列表的嵌套,range,for
  17. TCP/UDP区别
  18. 插件使用一树形插件---zTree一zTree异步加载
  19. Python3科学计算库概况
  20. abap事件。

热门文章

  1. QT多线程及通过事件进行通信(通过自定义事件,然后QApplication::postEvent给主界面,我之前用的是信号槽)
  2. Java学习-018-EXCEL 文件写入实例源代码
  3. angularJs的工具方法
  4. Android Service Intent must be explicit的解决方法
  5. ie无法下载 无法打开该internet站点.请求的站点不可用或无法找到.请稍后重试
  6. 浅谈负载均衡SLB、CLB和综合应用
  7. ZOOKEEPER解惑
  8. proguard使用
  9. Windows 8上使用SQL 2012 Configuration Manager
  10. App上架审核指南翻译