Oracle批量修改序列值

declare
  seq_name varchar2(100);
  l_currval number; --序列的当前值
  cursor seq_cur is
  select ur.sequence_name from user_sequences ur WHERE sequence_name LIKE 'HMALL%' OR sequence_name LIKE 'SYS%' OR sequence_name LIKE 'ACT%';--将当前数据库所有序列的名称存放到游标中 此处写判断语句 否则会出现ORA-32793
begin
  --dbms_output.enable(buffer_size=>null);
  open seq_cur;
  fetch seq_cur into seq_name;
  loop
    exit when not seq_cur%found;
    --修改数据库序列的下限
    execute immediate 'alter sequence '||seq_name||' minvalue -5000';
    
    --需要变化的数量
    execute immediate 'alter sequence '||seq_name||' increment by 10000';
    
    --给序列取下一个数
    execute immediate 'select '||seq_name||'.nextval from dual' into l_currval;
    
    --将序列的递增情况,恢复为按1递增
    execute immediate 'alter sequence '||seq_name||' increment by 1';
    
    --将数据库序列的下限修改为1
    execute immediate 'alter sequence '||seq_name||' minvalue 1';
    
    --dbms_output.put_line(l_currval);
    fetch seq_cur into seq_name;
  end loop;
  close seq_cur;
end;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值