`

Oracle 重置sequence2

阅读更多
CREATE OR REPLACE PROCEDURE RESET_SEQUENCE(p_sSeqName IN VARCHAR2)
 IS
    n    NUMBER(10 );
    tsql VARCHAR2(100 );
BEGIN
    EXECUTE IMMEDIATE 'SELECT ' || p_sSeqName || '.NEXTVAL FROM dual '
        INTO n;
    n := - (n - 1);

    tsql := 'alter sequence ' || p_sSeqName || ' increment by ' || n;
    EXECUTE IMMEDIATE tsql;

    EXECUTE IMMEDIATE 'SELECT ' || p_sSeqName || '.NEXTVAL FROM dual '
        INTO n;
    tsql := 'alter sequence ' || p_sSeqName || ' increment by  1' ;
    EXECUTE IMMEDIATE tsql;
   
    EXCEPTION WHEN OTHERS THEN
         NULL;
END RESET_SEQUENCE;
  

分享到:
评论

相关推荐

    Oracle sequence 重置(失效恢复)

    下面将详细介绍如何通过SQL脚本来重置Sequence,使其恢复正常功能。 ### SQL脚本实现 首先,我们定义了一个函数`func_getseq`,该函数接受一个表名作为参数,并返回该表主键的最大值。然后,我们使用一个PL/SQL块...

    oracle sequence语句重置方介绍

    在开发过程中,可能会用到oracle sequence语句,本文以oracle sequence语句如何重置进行介绍,需要的朋友可以参考下Oracle重置sequence语句1 Sql代码 代码如下: DECLARE n NUMBER(10 ); tsql VARCHAR2(100 ); p_...

    oracle 不用新建序列 重置序列(从1开始增长)

    本文将详细介绍如何在不新建序列的情况下,实现Oracle序列的重置,让其从1开始增长。这种方法通过编写PL/SQL过程来动态调整序列的增量,从而达到重置的目的。 ### Oracle序列重置方法 首先,我们需要理解Oracle...

    oracle 重置序列从指定数字开始的方法详解

    Oracle数据库中的序列(Sequence)是一种用于生成唯一数值的数据库对象,通常用于自动为表的主键字段提供递增或递减的值。序列在数据库设计中扮演着重要角色,特别是在大型系统中,确保数据的唯一性和完整性。在某些...

    分享ORACLE SEQUENCE跳号总结

    - **序列重置**:如果允许,可以通过`ALTER SEQUENCE RESTART`命令重置序列,但这可能会导致与现有数据冲突。 - **事务管理**:确保事务在提交前不回滚,或者在事务中捕获和处理序列值,以减少跳号的可能性。 - **...

    批量修改Oracle序列值的存储过程

    批量修改序列值通常涉及到ALTER SEQUENCE语句,例如将序列重置为特定值: ```sql ALTER SEQUENCE seq_name RESTART WITH new_value; ``` 但是,如果你有大量的序列需要修改,逐个执行ALTER语句会非常繁琐。这时,...

    oracle序列创建、修改、删除

    在Oracle数据库中,序列(Sequence)是一种特殊的数据对象,它能自动地生成唯一的整数,通常用于为主键字段提供连续的标识符。序列的使用极大地简化了数据插入过程,特别是对于那些需要保持唯一性的整数字段,如员工...

    mysql生成oracle序列

    在数据库领域中,不同数据库管理系统(DBMS)之间存在显著差异,比如Oracle与MySQL在处理序列(sequence)的方式上就有本质的不同。Oracle提供了内置的支持来管理自动递增的数字序列,而MySQL并没有原生支持序列这一特性...

    sqlserver中创建类似oracle序列的存储过程

    ### SQL Server 中创建类似 Oracle 序列的存储过程 #### 背景介绍 在数据库管理系统(DBMS)中,序列是一种自增的数据结构,常用于自动产生唯一标识符(如ID)。Oracle 数据库提供了非常方便的序列机制,而 SQL ...

    oracle中设置自增主键参考

    - `NOCYCLE`:当序列达到最大或最小值后不会循环重置。 - `NOCACHE`:禁用缓存机制,每次获取序列值时都直接从数据库中获取。 #### 触发器实现自动填充 为了使主键字段能够自动填充,我们需要创建一个触发器。这个...

    Oracle_GoldenGate概念、安装步骤及基本的配置步骤_for_ORACLE

    2. 使用ggsci命令行工具创建必要的目录结构。 3. 退出安装程序。 在Windows环境中,可以将Manager配置为随系统启动的服务,并设定自定义的服务名称。 ### 基本配置步骤 #### 创建OGG用户 在数据库中创建一个专...

    oracle日志文件大全

    - 成员管理:一个组内的每个成员具有相同的日志序列号(log sequence number),且成员的大小相同。 - 触发机制:日志缓冲区满三分之一、超过一兆的变化记录、事务提交时触发日志写入。 ##### 2. Archivelog Files...

    删除ORACLE某个用户下所有数据

    这可能是因为项目结束、测试环境重置或是其他原因导致的。为了完成这一任务,我们可以通过一系列SQL命令来实现对特定用户下各种类型对象(如表、视图、序列、函数、过程和包)的删除。 ### 一、删除表 表是数据库...

    《Oracle 技巧》

    - 如果发现序列值有误或需要重置,可以使用`ALTER SEQUENCE`命令进行调整,如`ALTER SEQUENCE my_sequence RESTART WITH 1;` - 对于触发器,可以通过`DROP TRIGGER`命令删除不再需要的触发器。 - 定期检查序列和...

    删除oracle下当前用户创建的所有对象

    在Oracle数据库管理中,有时需要清理用户环境,例如在测试环境中重置数据,或者在开发过程中重新开始。本文将详细讲解如何在PLSQL环境中删除一个用户所创建的所有对象,包括表、视图、序列、触发器和存储过程,以...

    oracle数据库的赋权脚本

    - **ALTER ANY SEQUENCE**:允许用户修改任何序列,包括重置序列值。 - **ALTER ANY USER**:允许用户修改任何用户的属性,如密码、资源限制等。 - **ALTER ANY RULE**:允许用户修改任何规则,这是Oracle 12c引入的...

    oracle触发器实现主键自动增长

    2. **并发控制**:在高并发环境中,多个用户可能同时尝试获取序列的下一个值,这时需要考虑序列的并发控制,以避免同一值被多次分配的情况。 3. **性能考量**:虽然触发器提供了强大的数据控制能力,但在高并发场景...

    oracle使用教程

    例如,`CREATE SEQUENCE`语句用于创建序列,`NEXTVAL`和`CURRVAL`函数用于获取序列的下一个值和当前值。 最后,我们提到的“Oracle9i教程”可能涵盖Oracle 9i版本的一些特性。Oracle 9i是Oracle数据库的一个重要...

Global site tag (gtag.js) - Google Analytics