Algumas vezes podemos ter a necessidade de criar uma sequence no Oracle com um valor igual ao maior id de uma determinada tabela acrescido de 1. Para fazer isso é bem simples, bastando utilizar a a cláusula “START WITH” no momento da criação da sequence, seguido do valor que se deseja que a sequence seja iniciada. Porém nem sempre podemos colocar manualmente esse valor pois caso o script não seja executado no momento em que foi criado pode ser que o valor inserido manualmente não seja mais o maior id da tabela, então a solução para isso é utilizar um script PL/SQL para pegar o maior id da tabela em tempo de execução, como no exemplo abaixo.
BEGIN
DECLARE
seqval NUMBER;
BEGIN
SELECT max(id_da_tabela) INTO seqval FROM minha_tabela;
execute immediate('CREATE SEQUENCE SEQ_tabela MINVALUE 1 START WITH ' || (seqval+1) || ' INCREMENT BY 1 NOCACHE NOORDER NOCYCLE');
END;
END;
/