不通过删除重建方式重置序列值得简单方式。
2008-04-26 13:58
225 查看
一般来讲,序列在实际开发过程中是经常用到的一种对象,通过它来生成主键是非常方便的,但是有些时候我们需要将其重新置零,通常采用的方式就是删除后重新创建。
下面我们来看一下另外一种方式:
SQL>createsequenceseq_1incrementby1startwith1maxvalue999999999;
序列已创建。SQL>createorreplaceprocedureseq_reset(v_seqnamevarchar2)as 2 nnumber(10); 3 tsqlvarchar2(100); 4 begin 5 executeimmediate'select'||v_seqname||'.nextvalfromdual'inton; 6 n:=-(n-1); 7 tsql:='altersequence'||v_seqname||'incrementby'||n; 8 executeimmediatetsql; 9 executeimmediate'select'||v_seqname||'.nextvalfromdual'inton; 10 tsql:='altersequence'||v_seqname||'incrementby1'; 11 executeimmediatetsql; 12 endseq_reset; 13 /
过程已创建。
SQL>selectseq_1.nextvalfromdual;
NEXTVAL--------- 2
SQL>/
NEXTVAL--------- 3
SQL>/
NEXTVAL--------- 4
SQL>/
NEXTVAL--------- 5
SQL>execseq_reset('seq_1');
PL/SQL过程已成功完成。
SQL>selectseq_1.currvalfromdual;
CURRVAL--------- 1
SQL>
这样可以通过随时调用此过程,来达到序列重置的目的。
此存储过程写的比较仓促,还可以进一步完善,在此就不再进一步讲述。
下面我们来看一下另外一种方式:
SQL>createsequenceseq_1incrementby1startwith1maxvalue999999999;
序列已创建。SQL>createorreplaceprocedureseq_reset(v_seqnamevarchar2)as 2 nnumber(10); 3 tsqlvarchar2(100); 4 begin 5 executeimmediate'select'||v_seqname||'.nextvalfromdual'inton; 6 n:=-(n-1); 7 tsql:='altersequence'||v_seqname||'incrementby'||n; 8 executeimmediatetsql; 9 executeimmediate'select'||v_seqname||'.nextvalfromdual'inton; 10 tsql:='altersequence'||v_seqname||'incrementby1'; 11 executeimmediatetsql; 12 endseq_reset; 13 /
过程已创建。
SQL>selectseq_1.nextvalfromdual;
NEXTVAL--------- 2
SQL>/
NEXTVAL--------- 3
SQL>/
NEXTVAL--------- 4
SQL>/
NEXTVAL--------- 5
SQL>execseq_reset('seq_1');
PL/SQL过程已成功完成。
SQL>selectseq_1.currvalfromdual;
CURRVAL--------- 1
SQL>
这样可以通过随时调用此过程,来达到序列重置的目的。
此存储过程写的比较仓促,还可以进一步完善,在此就不再进一步讲述。
相关文章推荐
- Oracle重置序列(不删除重建方式)
- Oracle重置序列(不删除重建方式)
- Oracle重置序列(不删除重建方式)
- Oracle重置序列(不删除重建方式)
- Oracle重置序列(不删除重建方式)
- Oracle重置序列(不删除重建方式)
- Oracle重置序列(不删除重建方式)
- Domino9下通过web方式批量重置邮箱密码
- ubuntu/linux 下 git 通过代理下载数据 (最简单的方式)
- 通过划分的方式在线性时间内找出一个序列中第K大的元素
- 动态规划(Dynamic programming,DP),通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。通常许多子问题非-
- Retrofit简单封装使用--Post请求封装请求体、Get请求通过参数、map方式构建url
- SqlHelper简单实现(通过Expression和反射)10.使用方式
- Android DDMS无法删除文件夹,通过adb shell方式删除文件夹
- **CodeIgniter通过hook的方式实现简单的权限控制
- std::map 通过遍历删除满足某些条件元素的两种方式
- Android Launcher开发(四)Launcher概述及简单添加和删除应用程序的快捷方式
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】在PHP中通过系统信号量加锁方式获取递增序列ID
- 如何通过注册表删除或显示快捷方式图标的小箭头?
- 通过POI的方式读取execl表格(简单教程