oracle重置序列从1开始

oracle重置序列从1开始
oracle版本号为11g

create sequence seq_name;                              --创建一个叫seq_name的序列,默认从1开始,步长为1

select seq_name.NEXTVAL from dual;              
select seq_name.NEXTVAL from dual;
select seq_name.NEXTVAL from dual;
select seq_name.NEXTVAL from dual;                    --运行四次,此时序列值为4
select seq_name.currval from dual;                    --显示当前序列值(4)

create or replace procedure seq_res_1                 --创建存储过程
is
v_sql varchar2(200);
n number;
begin
  select seq_name.CURRVAL into n from dual;
  v_sql:='alter sequence seq_name increment by -'||n||' minvalue 0';
  execute immediate v_sql;
  select seq_name.nextval into n from dual;
  v_sql:='alter sequence seq_name increment by '||1||' minvalue 0';
  execute immediate v_sql;
end seq_res_1;

call seq_res_1();                                       --执行存储过程,使序列初始值变为0,步长变为1


select seq_name.NEXTVAL from dual;                      --此时序列值显示为1

这个存储过程就是先将索引步长变为-seq_name.currval,即当前序列的值的相反数,再调用seq_name.nextval,使序列向后退当前值的步数,变为0。这时再调用seq_name.nextval,就可以使序列值变为1了。

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值