Изменение последовательности в этом сценарии действительно плохая идея.Особенно в многопользовательской среде.Вы получите совершенную транзакцию и, возможно, несколько ошибок в данных о состоянии гонки или ошибки целостности.Было бы целесообразно, если вы уже импортировали устаревшие данные и хотите вставить новые данные с идентификаторами из последовательности.Затем вы можете изменить последовательность, чтобы переместить currval к максимально существующему ...
Мне кажется, что здесь вы хотите генерировать идентификаторы из последовательности.Это не нужно делать с помощью
select seq.nextval into l_variable from dual;
insert into table (id, ...) values (l_variable, ....);
. Вы можете использовать последовательность непосредственно во вставке:
insert into table values (id, ...) values (seq.nextval, ....);
и при желании получить назначенное значение обратно на
insert into table values (id, ...) values (seq.nextval, ....)
returning id into l_variable;
Это, конечно, возможно даже для массовых операций с execBatch.Либо просто создавая идентификаторы, либо даже возвращая их.Я не уверен насчет правильного синтаксиса в java, но это будет что-то в строках
insert into table values (id, ...) values (seq.nextval, ....)
returning id bulk collect into l_cursor;
, и вам будет предоставлен ResultSet для просмотра назначенных номеров.