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;
    /
  • 相关阅读:
    11. Container With Most Water
    9. Palindrome Number
    375. 猜数字大小 II leetcode java
    leetcode 72 编辑距离 JAVA
    73. 矩阵置零 leetcode JAVA
    快速排序 JAVA实现
    63. 不同路径 II leetcode JAVA
    重写(override)与重载(overload)
    62 不同路径 leetcode JAVA
    leetcode 56 合并区间 JAVA
  • 原文地址:https://www.cnblogs.com/chriskwok/p/9959076.html
Copyright © 2011-2022 走看看