create or replace procedure p_update_sequence(
i_sequence_name in varchar2,
i_table_name in varchar2,
i_id_column in varchar2
) is
v_sql varchar2(2000);
v_max_id number;
v_diff number;
begin
v_sql := 'select max(' || i_id_column || ') from ' || i_table_name;
execute immediate v_sql into v_max_id;
v_sql := 'select ' || v_max_id || ' - ' || i_sequence_name || '.nextval from dual';
execute immediate v_sql into v_diff;
if v_diff <= 0 then
return;
end if;
v_sql := 'alter sequence ' || i_sequence_name || ' increment by ' || v_diff;
execute immediate v_sql;
v_sql := 'select ' || i_sequence_name || '.nextval from dual';
execute immediate v_sql into v_diff;
v_sql := 'alter sequence ' || i_sequence_name || ' increment by 1';
execute immediate v_sql;
end p_update_wf_sequence;
oracle同步sequence
最新推荐文章于 2023-06-05 17:04:37 发布