declare v_in varchar2(1024); v_start int;v_end int ; v_table varchar2(200);v_seq varchar2(200);v_table_seq varchar2(100);
begin
v_table:='jx_khfa';--表名
v_seq:='seq_jx_khfa';--序列名
v_table_seq:='id';--表字段对应序列
v_in:= 'select max('||v_table_seq||') from '||v_table;--查询表中最大值
execute immediate v_in into v_start;
v_in:= 'select '||v_seq||'.nextval from dual ';--查询下一个序列值
execute immediate v_in into v_end;
v_in:= 'ALTER SEQUENCE '||v_seq||' INCREMENT BY '||to_char(v_start-v_end+1);--更改步长
execute immediate v_in;
execute immediate 'select '||v_seq||'.nextval from dual ' into v_end;--执行一次序列
execute immediate 'ALTER SEQUENCE '||v_seq||' INCREMENT BY 1';--改回步长
end;