zoukankan      html  css  js  c++  java
  • 【ORACLE】调整序列的当前种子值

    【ORACLE】调整序列的当前种子值

    --必须用SYS用户执行脚本;或具有SYSDBA角色登录;
    CREATE OR replace
    PROCEDURE      seq_reset_startnum(v_seqname varchar2, v_startnum number) AS n number(10); 
    v_step number(10):=1;--步进 
    tsql varchar2(200); 
    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 seq_reset_startnum; 
    
    --必须用SYS用户执行脚本;或具有SYSDBA角色登录;
    EXEC seq_reset_startnum('"CONCEPT"."DOCMETADATA_METADATAID_SEQ"', 1110000000);

    当前值与最大ID值相差不是太大的可以使用下面脚本:
    (注意:如果相差过大,譬如相差1个亿,则执行脚本脚本会很耗时)

    --重置"CONFIG"."DOCFIELD"序列的当前值
    DECLARE
     indexnum number;
     seqnumber number;
     tablenum number;
     indexintr number;
     BEGIN
       SELECT MAX(DOCFIELDID) INTO indexnum FROM "CONFIG"."DOCFIELD";
       SELECT  "CONFIG"."DOCFIELD_DOCFIELDID_SEQ".nextval INTO seqnumber FROM DUAL;
       indexintr := indexnum - seqnumber;
       IF indexintr > 0 THEN
         FOR ind IN 1..indexintr loop
              SELECT "CONFIG"."DOCFIELD_DOCFIELDID_SEQ".nextval INTO tablenum FROM DUAL;
         END loop ;
       END if;
    end;
    /
  • 相关阅读:
    大型网站架构演化发展历程
    用Haproxy给MySQL做负载均衡
    一致性hash和虚拟节点
    Apache + Tomcat +mod_jk 实现集群
    浅谈时钟的生成(js手写代码)
    javascript
    vue-cli中安装方法
    webstorm激活
    解决webstorm卡顿问题
    gulp前端自动化环境搭建详解
  • 原文地址:https://www.cnblogs.com/chriskwok/p/9959076.html
Copyright © 2011-2022 走看看