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

摘要:
v_startnumnumber)A编号(10);=v_ startnum-n-v_步骤;立即执行'select'||v_seqname||'。下一步从两个INTOn开始;ENDseq_ reset_开始编号;从“配置”开始SELECTMAX(DOCFIELDD)INTOIndexnum。“文档字段”;

【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;
/

免责声明:文章转载自《【ORACLE】调整序列的当前种子值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【PHP】你使用过redis做异步队列么,是怎么用的?有什么缺点?iOS-原生纯代码约束总结(一)之 AutoresizingMask下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ESP32开发(2)esp32-cam采集图像

ESP32-CAM摄像头开发板 USB转串口下载器 杜邦连接线若干        注意:GPIO0连接GND(下拉)的作用是让ESP32-CAM进入下载启动模式,这个模式里,才能利用Arduino IDE给ESP32编程,否则IDE会报错,代码烧录完成后,我们需要断开GPIO0和GND的连接,让ESP32进入正常的内存启动模式。 配置ESP32环...

[转] 用ModelSim仿真PLL模块

由于要对FPGA读写SDRAM的工程进行调试,第一步就是验证PLL模块的功能,故结合网上找的一些资料,进行了如下PLL仿真实验。 下面是仿真的全过程 首先,看一下Quartus中的PLL模块: 从上面图中可以看出:我的FPGA输入时钟是20MHZ,该PLL有三个输出,其中 C0:5倍频,100MHZ C1:1倍频,20MHZ C2:5倍频,100M...

NETSH WINSOCK RESET这条命令的含义和作用?

简单来说netsh winsock reset命令含义是重置 Winsock 文件夹。假设一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,就须要用netsh winsock reset命令来重置Winsock文件夹借以恢复网络。 winsock是windows网络编程接口,从Windows XP SP2開始内置了一条命令使用nets...

备战秋招[四]-复位

欢迎关注个人公众号摸鱼范式------------------------------------------ 版权声明: 本文作者: 烓围玮未 首发于知乎专栏:芯片设计进阶之路 转发无需授权,请保留这段声明。 ------------------------------------------ 复位 首先上思维导图: 如果要问“芯片中怎么复位才对?”...

git 撤销修改和版本回退

撤销修改 1、撤销工作区中当前目录中的所有修改git checkout . 2、撤销工作区中指定文件的修改git checkout -- filename 注意:checkout命令只能撤销工作区中的修改,不能撤销暂存区中的修改 git checkout命令还有一个非常重要的作用就是切换分支,可用于分支管理 1、切换到指定分支(如果分支在本地不存在,会自动...

JetBrains agent 2020.2.x全系列激活(仅供学习使用!!!)

首项 寻找菜单栏中的help, 选择最下方的  Eval Reset .然后点击整个页面的右下方Reset. 需要复制的指令 https://plugins.zhile.io IDE Eval Reset 点赞 关注,一波三连~...