• 【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;
    /
  • 相关阅读:
    类的创建
    线性规划
    break、continue、pass介绍
    array numpy 模块
    hive字符串函数
    进化的Spark, 从DataFrame说起
    hive sql split 分隔符
    Spark On YARN内存分配
    浅谈Spark应用程序的性能调优
    Spark-Mllib(二)基本统计
  • 原文地址:https://www.cnblogs.com/chriskwok/p/9959076.html
Copyright © 2020-2023  润新知