重置oracle序列从指定数字开始

复制代码 代码如下:

declare

n number(10);

v_startnum number(10):=10000001;--从多少开始

v_step number(10):=1;--步进

tsql varchar2(200);

v_seqname varchar2(200):='MIP_JF_SEQUENCE';--序列名

begin

execute immediate 'select '||v_seqname||'.nextval from dual' into n;

n:=v_startnum-n-v_step;--从10000001开始

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 '||v_step;

execute immediate tsql;

end;

不通过删除重建方式 重置序列值得简单方式。 一般来讲,序列在实际开发过程中是经常用到的一种对象,通过它来生成主键是非常方便的,但是有些时候我们需要将其重新置零,通常采用的方式就是删除后重新创建。

下面我们来看一下另外一种方式:

复制代码 代码如下:

SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;

序列已创建。

SQL> create or replace procedure seq_reset(v_seqname varchar2) as

2 n number(10);

3 tsql varchar2(100);

4 begin

5 execute immediate 'select '||v_seqname||'.nextval from dual' into n;

6 n:=-(n-1);

7 tsql:='alter sequence '||v_seqname||' increment by '|| n;

8 execute immediate tsql;

9 execute immediate 'select '||v_seqname||'.nextval from dual' into n;

10 tsql:='alter sequence '||v_seqname||' increment by 1';

11 execute immediate tsql;

12 end seq_reset;

13 /

过程已创建。

SQL> select seq_1.nextval from dual;

NEXTVAL

---------

2

SQL> /

NEXTVAL

---------

3

SQL> /

NEXTVAL

---------

4

SQL> /

NEXTVAL

---------

5

SQL> exec seq_reset('seq_1');

PL/SQL 过程已成功完成。

SQL> select seq_1.currval from dual;

CURRVAL

---------

1

SQL>

这样可以通过随时调用此过程,来达到序列重置的目的。

此存储过程写的比较仓促,还可以进一步完善,在此就不再进一步讲述

Oracle重置序列(不删除重建方式)

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;

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

oracle序列重置6,oracle 重置序列从指定数字开始的方法详解相关推荐

  1. oracle创建序列seq起始值为1_oracle 重置序列从指定数字开始的方法详解

    重置oracle序列从指定数字开始 declare n number(10); v_startnum number(10):=10000001;--从多少开始 v_step number(10):=1 ...

  2. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法详解...

    Golang 实现 PHP里的 serialize() . unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 pa ...

  3. linux oracle 用户创建,LINUX下Oracle数据库用户创建方法详解

    本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切 ...

  4. python连接oracle数据库的方法_Python3.6连接Oracle数据库的方法详解

    本文实例讲述了Python3.6连接Oracle数据库的方法.分享给大家供大家参考,具体如下: 下载cx_Oracle模块模块: https://pypi.python.org/pypi/cx_Ora ...

  5. oracle tns 代理配置_oracle数据库tns配置方法详解

    TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器. TNS ...

  6. oracle数据库按日期查询,关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解...

    关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解 Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设 ...

  7. Windows系统里Oracle 11g R2 Client(64bit)的下载与安装(图文详解)

    1.全网最详细的Windows系统里Oracle 11g R2 Client(64bit)的下载与安装(图文详解) 方法地址:https://www.cnblogs.com/zlslch/p/9273 ...

  8. 删除oracle数据库的三种方法,oracle数据库的删除方法详解

    oracle数据库的删除方法详解 1.图形界面删除 练习之前记得创建快照 执行命令之前要保证数据库属于open状态 SQL> alter database open; [oracle@local ...

  9. oracle如何对数据库进行备份,对Oracle数据库进行备份的两种方法详解

    首页 > 演讲稿 > 自我介绍演讲稿 > 对Oracle数据库进行备份的两种方法详解 对Oracle数据库进行备份的两种方法详解 时间:2019-05-05   来源:自我介绍演讲稿 ...

最新文章

  1. 实现不是三角形尾巴的气泡框
  2. ios Sqlite数据库增删改查基本操作
  3. 重装oracle12c_记一次win server 2012上oracle12c的安装过程
  4. 小学一年级第一次上计算机课,小学一年级上册信息技术教案【三篇】
  5. Spring-学习笔记03【Spring的IOC和DI】
  6. linux,shell中if else if的写法,if elif
  7. rocketmq 重复消费_消息队列 RocketMQ
  8. 移动互联消亡者及原因分析
  9. Hadoop学习笔记—14.ZooKeeper环境搭建
  10. 从Discuz迁移帐号密码到NodeBB
  11. JavaWeb知识点:Http协议
  12. 2-PowerShell 对象,查询操作和格式化
  13. 在同一台服务器上配置多个Tomcat
  14. CSS 权威指南 读书笔记(三)
  15. 07版qq默认经典表情下载
  16. 【CSS】background各属性一览汇总
  17. 图片识别转公式,GitHub 又一 LaTeX 神器面世!
  18. 5G时代的射频器件革命
  19. 装配作业指导书是什么?装配作业指导书主要包括哪些内容?
  20. 检测 Linux VPS 是 Xen、OpenVZ 还是 KVM 架构的方法

热门文章

  1. Spark Hive 云原生改造在智领云的应用
  2. 华人团队再获ACL最高奖,这次来自字节跳动的NLP基础研究
  3. 爱数智慧荣获“阿里云2021年度优秀供应商” | 喜讯
  4. 连 CEO 都不香了?这些互联网大佬接连辞任
  5. 程序员求生指南:告别大小周,摆脱监视,直奔年终奖!
  6. 谁说数学好编程就好了?MIT告诉你:不对!
  7. 常说的「缓存穿透」和「击穿」是什么
  8. 注意了!清华官宣:大数据人才缺口高达150万!网友:机会来了!
  9. 滴滴技术总监受贿 1000 万,列入招聘黑名单,互联网大厂反腐有多强?
  10. Deno 会取代 Node.js 吗?