Oracle 修改序列的起始值start with

两种方式实现:

    方式一:修改序列的增长值increment by,将其增长到符合要求的开始值,然后再将increment by调回1。

declare
  v_max       int;
  v_end       varchar2(10);
  v_len       int;
  v_in        varchar2(1024);
begin
  select max(tc.c_sixseq_contractcode) into v_max  from table_info tc;  --查询表中最大值
  select length(v_max) into v_len  from dual;
  if v_len=5 then
    select ('0'||to_char(v_max)) into v_end  from dual;
   execute immediate  'ALTER SEQUENCE SEQ_123 INCREMENT BY '||v_end; --更改步长
   select SEQ_APPRAISEMENT.nextval into v_end  from dual;  --获取下次值
   execute immediate 'ALTER SEQUENCE SEQ_123 INCREMENT BY 1'; --改回步长
  end if;
end;
/

  方式二:先删后插入。

declare
  v_max       int;
  v_end       varchar2(10);
  v_len       int;
begin  
if  fc_IsSeqExists('SEQ_123') then
   execute immediate 'drop sequence SEQ_123';
   select max(tc.c_sixseq_contractcode) into v_max  from table_info tc;  --查询表中最大值
   select length(v_max) into v_len  from dual;
   if v_len=5 then
    select (to_char(v_max*10+1)) into v_end  from dual;
    execute immediate 'create sequence SEQ_123
	 minvalue 1
   maxvalue 999999
	 start with '||v_end||' 
   increment by 1 
   cache 200
	 cycle';
   end if;
end if;
end;
/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值