当前位置:   article > 正文

ORACLE更新序列最大值为表的最大值_oracle修改序列的最大值sql语句

oracle修改序列的最大值sql语句

-- 增加更新序列存储过程
create or replace procedure update_seq(v_table_name in varchar2, v_seq_name in varchar2) is
  -- id最大值
  v_max int;
  -- 序列当前值
  v_seq_val int;
  -- 查询id最大值的sql字符串
  selectIdMaxStr VARCHAR2 (500) := 'select max(id) from ' || v_table_name;
  -- 查询seq下一个值的sql字符串
  selectSeqValStr VARCHAR2 (500) :='select ' || v_seq_name || '.NEXTVAL from dual' ;
begin
  EXECUTE IMMEDIATE selectIdMaxStr into v_max;
  -- 未修改前的序列下一个值
  EXECUTE IMMEDIATE selectSeqValStr into v_seq_val;
  EXECUTE IMMEDIATE 'alter sequence '|| v_seq_name ||' increment BY '|| (v_max - v_seq_val);
  -- 修改后的的序列取下一个值
  EXECUTE IMMEDIATE selectSeqValStr into v_seq_val;
  -- 修改为原来的1
  EXECUTE IMMEDIATE 'alter sequence '|| v_seq_name ||' increment BY 1';
  DBMS_OUTPUT.put_line(v_table_name||' 的序列 '||v_seq_name||' 已设置为 '|| v_seq_val);
end update_seq;

/
-- 调用序列
begin
  -- 参数 (表名, 序列名)
  update_seq('com_script_param','seq_com_script_param');
end;

/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/816572
推荐阅读
相关标签
  

闽ICP备14008679号