Script utilizado para atualizar uma sequence no Oracle quando valores foram inseridos manualmente (com código direto no INSERT) e a sequence ficou para trás.
- DECLARE
- actual_sequence_number
- INTEGER;
- max_number_from_table
- INTEGER;
- difference
- INTEGER;
- BEGIN
- SELECT SQ_CD_TP_TAXA_SERV.CURRVAL INTO actual_sequence_number FROM DUAL;
- SELECT MAX(CD_TP_tAXA_SERV) INTO max_number_from_table FROM SIGA_TIPO_TAXA_SERVICO;
- SELECT (max_number_from_table-actual_sequence_number)+1 INTO difference FROM DUAL;
- --DBMS_OUTPUT.put_line (actual_sequence_number);
- --DBMS_OUTPUT.put_line (CONCAT('alter sequence sq_cd_tp_taxa_serv increment by ', difference));
- EXECUTE IMMEDIATE CONCAT('alter sequence sq_cd_tp_taxa_serv increment by ', difference);
- END;
- --aqui ele puxa o próximo valor usando o incremento necessário
select sq_cd_tp_taca_serv.nextval
--aqui volta o incremento para 1, para que futuras inserções funcionem normalmente
alter sequence sq_cd_tp_taxa_serv increment by 1
Nenhum comentário:
Postar um comentário