Orace序列怎么达思数据恢复序列号从1开始

oracle重置序列从指定数字开始的方法详解
来源:易贤网&& 阅读:114 次&&日期:
温馨提示:易贤网小编为您整理了“oracle重置序列从指定数字开始的方法详解”,方便广大网友查阅!
重置oracle序列从指定数字开始
n number(10);
v_startnum number(10):=;--从多少开始
v_step number(10):=1;--步进
tsql varchar2(200);
v_seqname varchar2(200):='MIP_JF_SEQUENCE';--序列名
execute immediate 'select '||v_seqname||'.nextval from dual'
n:=v_startnum-n-v_--从开始
tsql:='alter sequence '||v_seqname||' increment by '||
execute immediate 'select '||v_seqname||'.nextval from dual'
tsql:='alter sequence '||v_seqname||' increment by '||v_
不通过删除重建方式 重置序列值得简单方式。 一般来讲,序列在实际开发过程中是经常用到的一种对象,通过它来生成主键是非常方便的,但是有些时候我们需要将其重新置零,通常采用的方式就是删除后重新创建。
下面我们来看一下另外一种方式:
SQL& create sequence seq_1 increment by 1 start with 1 maxvalue ;
序列已创建。
SQL& create or replace procedure seq_reset(v_seqname varchar2) as
2 n number(10);
3 tsql varchar2(100);
5 execute immediate 'select '||v_seqname||'.nextval from dual'
6 n:=-(n-1);
7 tsql:='alter sequence '||v_seqname||' increment by '||
9 execute immediate 'select '||v_seqname||'.nextval from dual'
10 tsql:='alter sequence '||v_seqname||' increment by 1';
12 end seq_
过程已创建。
SQL& select seq_1.
SQL& exec seq_reset('seq_1');
PL/SQL 过程已成功完成。
SQL& select seq_1.
这样可以通过随时调用此过程,来达到序列重置的目的。
此存储过程写的比较仓促,还可以进一步完善,在此就不再进一步讲述
Oracle重置序列(不删除重建方式)
Oracle中一般将自增sequence重置为初始1时,都是删除再重建,这种方式有很多弊端,依赖它的函数和存储过程将失效,需要重新编译。
不过还有种巧妙的方式,不用删除,利用步长参数,先查出sequence的nextval,记住,把递增改为负的这个值(反过来走),然后再改回来。
假设需要修改的序列名:seq_name
1、select seq_name. //假设得到结果5656
2、alter sequence seq_name increment by -5655; //注意是-(n-1)
3、select seq_name.//再查一遍,走一下,重置为1了
4、alter sequence seq_name increment by 1;//还原
可以写个存储过程,以下是完整的存储过程,然后调用传参即可:
create or replace procedure seq_reset(v_seqname varchar2) as n number(10);
tsql varchar2(100);
execute immediate 'select '||v_seqname||'.nextval from dual'
n:=-(n-1);
tsql:='alter sequence '||v_seqname||' increment by '||
execute immediate 'select '||v_seqname||'.nextval from dual'
tsql:='alter sequence '||v_seqname||' increment by 1';
更多信息请查看
更多信息请查看
【】&&&&&【点此处查询各地各类考试咨询QQ号码及交流群】
易贤网手机网站地址:
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
相关阅读 & & &
&nbsp&nbsp&nbsp &nbsp&nbsp&nbsp会员注册
本站不参与评论!()
自觉遵守:爱国、守法、自律、真实、文明的原则
尊重网上道德,遵守中华人民共和国各项有关法律法规
严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的评论
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
您在本站发表的评论,本站有权保留、转载、引用或者删除
参与本评论即表明您已经阅读并接受上述条款2013年7月 MS-SQL Server大版内专家分月排行榜第一2009年3月 Oracle大版内专家分月排行榜第一2009年2月 Oracle大版内专家分月排行榜第一
2013年9月 MS-SQL Server大版内专家分月排行榜第二2013年8月 MS-SQL Server大版内专家分月排行榜第二2009年4月 Oracle大版内专家分月排行榜第二2009年1月 Oracle大版内专家分月排行榜第二2004年10月 MS-SQL Server大版内专家分月排行榜第二
2008年11月 Oracle大版内专家分月排行榜第三
2015年1月 Oracle大版内专家分月排行榜第一2014年12月 Oracle大版内专家分月排行榜第一2014年11月 Oracle大版内专家分月排行榜第一2014年10月 Oracle大版内专家分月排行榜第一2014年9月 Oracle大版内专家分月排行榜第一2014年8月 Oracle大版内专家分月排行榜第一
2015年5月 Oracle大版内专家分月排行榜第二2015年3月 Oracle大版内专家分月排行榜第二2015年2月 Oracle大版内专家分月排行榜第二
2008年11月 Oracle大版内专家分月排行榜第三
2008年11月 Oracle大版内专家分月排行榜第三
2008年11月 Oracle大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。23659人阅读
&&&&&&& Oracle 序列(Sequence)主要用于生成流水号,Oracle EBS系统中是经常用到的。但是,有时需要修改序列初始值(START WITH)时,好多人凭感觉认为:Alter Sequence SequenceName Start With N。事实上,在Oracle Db中,修改序列没有这样的语法。没有这样的语法情况怎么办,有二种方法可以完成
&&&&&&& 1.先删除序列,然后重新创建。不过这不是当前要讲的重点。这个方法比较方便。
&&&&&&& 2.通过Increment By来实现修改初始值。
&&&&&&&&&&&&例如:若序列名称是SeqTest2010_S,初始值是13,而现在要设置初始值为1020,Increment By值为:1007(<span style="color: #-13)
&&&&&&&&&&& 2.1 执行:Alter Sequence SeqTest2010_S Increment By 1007;
&&&&&&&&&&& 2.2 执行:Select SeqTest2010_S.NextVal From D
&&&&&&&&&&&&2.3 执行:Alter Sequence SeqTest2010_S Increment By 1;
&&&&&&&&&&& 修改完成。简单吧
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:265427次
积分:3629
积分:3629
排名:第7158名
原创:100篇
评论:55条
(2)(4)(1)(1)(1)(2)(1)(1)(4)(4)(1)(2)(2)(1)(11)(6)(4)(5)(1)(1)(1)(1)(2)(1)(1)(1)(4)(3)(4)(2)(1)(1)(2)(2)(3)(1)(2)(7)(1)(3)(1)(2)(2)}

我要回帖

更多关于 ipad恢复序列号不适用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信