Oracle 自增序列,前面补0

本文介绍了Oracle数据库中创建、查看、重置和删除序列的操作,包括sequence的属性设置,如INCREMENTBY、STARTWITH等。同时,展示了如何通过存储过程seq_reset实现序列的快速重置,并详细解释了每个步骤的作用。了解这些内容有助于更好地管理和维护数据库序列。
摘要由CSDN通过智能技术生成

1.创建序列

create sequence seq_name
INCREMENT BY 1  -- 每次加几个
START WITH 1    -- 从1开始计数
NOMAXVALUE      -- 不设置最大值  MAXVALUE 最大值 例如:MAXVALUE 99999
NOCYCLE         -- 一直累加,不循环 CYCLE 从头开始
CACHE 10;       -- 预先在内存里面放置一些sequence,存取的较快;cache里面的取完后,oracle自动再取一组到cache。使用cache或许会跳号,比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。

创建序列:
create sequence seq_name increment by 1 start with 1 minvalue 1 maxvalue 9999 nocache

2.查看效果

select (lpad(seq_name.nextval, 4, '0')) seq from dual 

3.序列重置

1. // 假设得到结果 5656
select seq_name.nextval from dual; 
2. // 设置增加大小
alter sequence seq_name increment by -5655;
3. // 再查一遍,走一下,重置为1了
select seq_name.nextval from dual;
4. // 还原
alter sequence seq_name increment by 1;


创建存储过程

create or replace procedure seq_reset(v_seqname varchar2) as 
  n number(10);
  tsql varchar2(100); 
begin 
  execute immediate 'select '||v_seqname||'.nextval from dual' into n;  
  n:=-(n-1);  
  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 1'; 
  execute immediate tsql; 
end seq_reset;

4.删除序列

drop sequence seq_name;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值