domingo, 20 de julho de 2014

Atualizar nextval oracle

Pessoal, tenho uma tabela que um monte de gente inseriu dados na mão e não respeitou a sequence.

Então utilizei este script para atualizar o nextval da sequence com o max()+1 da coluna id.


declare
  v_prox_numero number;
  v_numero_atual number;
  v_novo_numero number;
  v_numero number;
 
  v_texto varchar2(100);
begin
 
  select max(t.id)+1
    into v_prox_numero
    from nome_tabela t;
   
  select nome_sequence.nextval
    into v_numero_atual
    from dual;
   
  v_novo_numero := (v_prox_numero - v_numero_atual)+1;
 
  if v_novo_numero > 0 then
    for reg_seq in 1..v_novo_numero loop
       
      select nome_sequence.nextval
      into v_numero
      from dual;
   
    end loop;
  end if;
end;


Créditos à Ana Karina Pereira.

Abraços!
Adriano Schmidt

Nenhum comentário:

Postar um comentário