`
myharmony
  • 浏览: 106259 次
  • 性别: Icon_minigender_1
  • 来自: 中山市
社区版块
存档分类
最新评论

改变Oracle Sequence的NEXTVAL

 
阅读更多
结合网上例子,写了一个小的Procedure,来实现Upgrade 序列的NEXTVAL
CREATE OR REPLACE PROCEDURE proc_upgradesequence (v_seqname VARCHAR2, -- 序列的名称
 v_newnum NUMBER) IS -- 需要的NEXTVAL
  v_error        VARCHAR2 (1000);
  ldebug         VARCHAR2 (200);
  v_currval      NUMBER;
BEGIN
  ldebug := '1. Get sequnce current value';

  EXECUTE IMMEDIATE 'select ' || v_seqname || '.nextval from dual' INTO v_currval;

  ldebug := '2. Alter this sequence nocache';

  EXECUTE IMMEDIATE 'alter sequence ' || v_seqname || ' nocache';

  ldebug := '3. Alter this sequence current value';

  EXECUTE IMMEDIATE 'alter SEQUENCE ' || v_seqname || ' increment by ' || TO_CHAR (v_newnum - v_currval - 1) || ' nocache';

  ldebug := '4. Get this sequence next value';

  EXECUTE IMMEDIATE 'select ' || v_seqname || '.nextval from dual' INTO v_currval;

  ldebug := '5. Recover this original sequence increment step';

  EXECUTE IMMEDIATE 'alter SEQUENCE ' || v_seqname || ' increment by 1 nocache';
EXCEPTION
  WHEN OTHERS THEN
    v_error := SQLERRM;
    DBMS_OUTPUT.put_line(v_error);
 END;
分享到:
评论

相关推荐

    Hibernate Oracle sequence的使用技巧

     1、在Oracle sequence首先创建sequence  create sequence seq_idminvalue 1start with 1increment by 1cache 20;  2、在你的hbm.xml中的配置  seq_id  这样再插入数据的时候,Hibernate会自动生成如下语句: ...

    oracle 主键自增 sequence

    insert into table(id) values (sequence.nextval) 緣,仯芣妸訁 23:26:51 就这么简单一句对吧 胡萝卜须 23:26:58 先创建 胡萝卜须 23:27:17 create sequence seq; 胡萝卜须 23:28:00 create sequence S_S_DEPART ...

    sequence等同于序列号

    在Oracle数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方。 1、Create Sequence (注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限) CREATE ...

    oracle sequence语句重置方介绍

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

    sqlserver实现oracle的sequence方法

    如果在ORACLE里面用惯了Sequence的兄弟们,要在SqlServer里实现Sequence,就会发现没有现成的Sequence对象可以Create了。那应该怎么办呢?下面我们在SQLServer中实现Sequence

    MySQL实现类似Oracle序列的方案

    Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的; 但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要迁移数据库,...

    最全的oracle常用命令大全.txt

    可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行 DEFINE_EDITOR=vi f、运行命令文件 SQL>START test SQL>@test 常用SQL*Plus语句 a、表的创建、修改、删除 创建表的...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成  物理结构 物理结构包含三种数据文件: 1) 控制文件 2) 数据文件 3) 在线重做日志文件  ...

    Oracle 创建和使用序列

    --创建序列 ...insert into user_table(user_id,user_name,user_pwd) vlaues(seq_user.nextval,'tcy','tcy'); --修改序列 alert sequence seq_user increment by 5 maxvalue 100000 nocycle nocache;

    Oracle 使用触发器创建自动序列号

    --序列drop sequence SEQ_TEST create sequence SEQ_TEST minvalue 1--最小值 nomaxvalue--不设置最大值 increment by 1--每次加1个 start with 1--从1开始计数,nocycle是一直累加,不循环 cache 20 order; --查...

    Oracle8i_9i数据库基础

    §4.3 序号(sequence) 146 §4.3.1 建立序号 146 §4.3.2 修改序号 147 §4.3.3 使用序号 147 §4.3.4 删除序号 147 §4.4 同义词 148 §4.4.1 建立同义词 148 §4.4.2 删除同义词 149 §4.5 视图、同义词和序列有关...

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

    重置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’;...

    数据库5关系数据库完整性实验.doc

    实验内容与步骤 ORACLE环境中通过触发器可以定义为更复杂的完整性约束 例1:通过触发器产生主键值 create sequence ql minvalue 010341416; create table student(sno number(9) primary key ,sname varchar2(20));...

    Oracle 下的开发日积月累

    Oracle SQL语句中的Update可以和SEQUENCE联合使用,以达到更新某字段的值连续编号,而不需要使用游标去逐条遍历更新数据库记录。例如 update sample set id = seq_id.nextval; Oracle中的select语句允许使用...

    Oracle事例

    sql> alter index xay_id allocate extent(size 200k datafile \'c:/oracle/index.dbf\'); <8>.alter index xay_id deallocate unused; 、查看索引 SQL>select index_name,index_type,table_name from user...

    数据从MySQL迁移到Oracle 需要注意什么

    CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL 2. 单引号的处理 MYSQL里可以用双引号包...

    Oracle 触发器的使用小结

    –建递增序列 CREATE SEQUENCE LZEAM_SP_LOOP_EQ_SEQ MINVALUE 1 INCREMENT BY 1 START WITH 1 测试: SELECT LZEAM_SP_LOOP_EQ_SEQ.NEXTVAL FROM DUAL –建触发器 CREATE OR REPLACE TRIGGER LZEAM.LZEAM_SP_LOOP_EQ...

    Oracle数字类型number自增的实现代码

    create sequence seq_student start with 6 increment by 1 maxvalue 500 nominvalue nocycle nocache; 创建触发器 create or replace trigger trigger_student before insert on student for each row declare ...

    如何自动建立oralce 数据库里 递增的id

    Create sequence IDC increment by 1 start with 1 minvalue 1; create or replace trigger tri_表名 before insert on 表名 for each row begin select IDC.nextval into :new.ID from dual; end tri_...

    java影院订票系统完整可运行配ORACLE数据库代码 SSH框架

    Connect scott/****@myoracle AS SYSDBA create USER goupiaoXT IDENTIFIED BY passward DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; grant connect to goupiaoXT; grant resource to goupiaoXT; ...

Global site tag (gtag.js) - Google Analytics