oracle同步sequence
来源:互联网 发布:移动工作站笔记本知乎 编辑:程序博客网 时间:2024/06/05 09:39
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;