• 【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;
    /
  • 相关阅读:
    Android之Handler
    错误一览表
    Android ImageView 的scaletype属性详细介绍 转
    Adobe Flash/Dreamweaver/Fireworks CS3 软件不能安装问题
    MySQL修改表属性的SQL语句
    Apache与Tomcat整合
    mySQL常用SQL语句技法
    今天第一次写博客
    Tomcat+JSP经典配置实例
    整合Apache+Tomcat服务器2
  • 原文地址:https://www.cnblogs.com/chriskwok/p/9959076.html
Copyright © 2020-2023  润新知