`
winie
  • 浏览: 216523 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

修改序列

阅读更多

create or replace procedure p_modify_sequences is 
  --更新各序列值的动态sql语句  
  str_sql varchar2(4000);  
  --是否修改成功,未发生异常返回true  
  r boolean;  
 
  --修改相应序列的nextval  
  --sequencename:序列名  
  --talename:由序列生成主键的表名  
  --keyf:由序列生成的主键名  
  function f_modify_sequence(sequencename varchar2,  
                             talename     varchar2,  
                             keyf         varchar2) return boolean is 
    lastvalue integer;  
    f_sql     varchar2(4000);  
    next_num  number;  
    max_num   number;  
  begin 
    --查询表中主键的最大值  
    f_sql := 'select max(' || keyf || ') from ' || talename;  
    execute immediate f_sql  
      into max_num;  
    if (max_num is not null) then 
      next_num := max_num + 1;  
      --修改序列的自增量为1  
      f_sql    := 'alter sequence ' || sequencename ||  
                  ' increment by 1 nocache';  
      execute immediate f_sql;  
      --f_sql:='select '||sequenceName||'.nextval from dual';  
      --execute immediate f_sql;  
      --f_sql := 'alter sequence ' || sequencename ||  
      --         ' increment by 1 nocache';  
      --execute immediate f_sql;  
      
      --循环  
      loop  
        --查询当前序列的下一个值  
        f_sql := 'select ' || sequencename || '.nextval from dual';  
        execute immediate f_sql  
          into lastvalue;  
        --select SE_DATATYPE.nextval into LastValue from dual;    
        --当序列的下一个值>= 表中现有主键的最大值时退出循环  
        exit when lastvalue >= next_num - 1;  
        --如果序列的下一个值小于表中现有主键的最大值时继续获取序列的下一个值  
        f_sql := 'select ' || sequencename || '.nextval from dual';  
        execute immediate f_sql  
          into lastvalue;  
        --select SE_DATATYPE.nextval into LastValue from dual;  
      end loop;
      --修改后的sequencename.currval仍为修改前的值,但sequencename.nextval值为中主键的最大值+1
      f_sql := 'alter sequence ' || sequencename ||  
               ' increment by 1 cache 20';  
      execute immediate f_sql;  
    end if;  
    commit;  
    return true;  
  exception  
    when others then 
      return false;  
  end f_modify_sequence;  
 
begin 
  r := f_modify_sequence('SEQ_MENUCODE', 'T_BOSSMENU', 'MENUCODE');  
end p_modify_sequences;

 

--更改步长
Alter sequence SEQ_FEE increment by 10;
select SEQ_FEE.nextval from dual;
--还原步长
Alter sequence mysq increment by 1;
select 'SF'||LPAD(SEQ_FEE.NEXTVAL,12,'0') AS VAL FROM DUAL;

分享到:
评论

相关推荐

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

    NULL 博文链接:https://zzx0421.iteye.com/blog/335955

    struct 修改 视频序列

    在yiwu的VTB1.0中表现出色,可以处理部分遮挡,C++代码值得学习

    json序列化notepad++

    亲测可使用notepad++json格式化插件,只需放在安装文件plugins文件夹下即可使用

    Vbs序列化/反序列化Json基类

    Vbs序列化/反序列化Json基类 可直接使用,bug已被我修复 Example: Dim fso, json, str, o, i Set json = New VbsJson Set fso = WScript.CreateObject("Scripting.Filesystemobject") str = fso.OpenTextFile(...

    Oracle 创建和使用序列

    --创建序列 create sequence seq_user start with 1 increment by 1 nomaxvalue cache 10; --使用序列 ...--修改序列 alert sequence seq_user increment by 5 maxvalue 100000 nocycle nocache;

    protobuf常用序列化和反序列化API

    protobuf常用序列化和反序列化API,相关教程:http://blog.csdn.net/tennysonsky/article/details/73920767

    序列比对软件clustalX

    Clustalx 软件简介:CLUSTALX-是CLUSTAL多重序列比对程序的Windows版本。Clustal X为进行多重序列和轮廓比对和分析结果提供一个整体...主要功能:你可以剪切、粘贴序列以更改比对的顺序; 你可以选择序列子集进行比对。

    unity 画面导出序列帧

    unity导出帧序列图片 如果无法导入 把插件中文名 修改为英文. 如果无法导入 把插件中文名 修改为英文.

    clustalx 核酸序列比对程序

    你可以剪切、粘贴序列以更改比对的顺序;你可以选择序列子集进行比对;你可以选择比对的子排列(Sub-range)进行重新比对并可插入到原始比对中;可执行比对质量分析,低分值片段或异常残基将以高亮显示。

    海尔2307户户通直播星序列化工具.zip

    海尔2307户户通直播星序列化工具为工厂维修机器使用使用场景:(1)更换flash需要重新进行序列化, 更改stbid或保留stbid不变1.本工具不需要连接工厂数据库,而是直接从HIC2307_NDSCA_xxxxxxxx_xxxxxxxx.dat文件里...

    oracle序列创建、修改、删除

    最近项目中要用oracle中的序列相关的内容,本人对oracle是小白一个,没办法只能在网上找相关的资源,还好,发现了一些,感觉挺实用的,就分享给大家了,该资源是oracle序列的创建、修改、以及删除的相关操作,有用例...

    序列化一个类_php的类的序列化脚本_

    可以对类名和变量根据需要自定义设置,方便了序列化的json对象修改

    m_sequence_m序列_m序列产生器_

    对网上现有的产生m序列的线性反馈移位寄存器代码进行了修改,可以通过输入本原多项式向量,生成相应m序列

    逆M序列m文件

    Matlab仿真程序的源代码逆m序列的,很简单,容易修改!

    Cookie购物车序列化

    购物车序列化类,保存数据到Cookie 可以直接使用,也可添加新属性!

    牛b硬件修改大师 破解版 硬盘序列mac ie版本修改

    牛b硬件修改大师 破解版 硬盘序列mac ie版本修改

    java程序,序列化和反序列化操作对文件的运用

    对文件的序列化和反序列化操作,定义一个对象,将对象的成员放入文件中,对文件内容进行添加、删除、修改等操作。

    TPA-LSTM时间序列预测实战案例

    进行加载实现多步长预测,本文所利用的数据集也可以替换成你个人的数据集来进行预测(修改个人的数据集的地方本文也进行了标注),同时本文会对TPA和LSTM分别进行概念的讲解帮助大家理解其中的运行机制原理(包括个人...

    tpl存储序列化

    这个库是用C语言写的,存储序列化十分的方便 官方推荐编译环境2008 和 2010,不过经过个人修改源码,在VC 6.0环境下编译通过!

    C# JSON 序列化源码

    C# JSON 序列化源码 //源码来源: CodeBetter.Json //修改说明: 修正几个错误,加入字典的反序列化 //技术联系: yandefu@163.com 如果使用中有问题,或者有修改升级有空通知一下

Global site tag (gtag.js) - Google Analytics