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;
    /
  • 相关阅读:
    Cartographer源码阅读(1):程序入口
    ROS开发与常用命令
    实时Cartographer测试(1)
    Cartographer安装
    ROS安装(2)
    Linux学习和ROS安装(1)
    无法启动程序
    c# 获取端口的连接数,网站的连接数
    SignarL服务器端发送消息给客户端的几种情况
    c#操作IIS之IISHelper
  • 原文地址:https://www.cnblogs.com/chriskwok/p/9959076.html
Copyright © 2011-2022 走看看