Подтвердить что ты не робот

Запросить несколько NEXTVAL из последовательности в одном заявлении

В принципе, мне нужно запросить около тысячи NEXTVAL из последовательности. Я могу запросить их в цикле, или я могу запросить их через соединение с reeeeeally большой таблицей.

Есть ли еще менее хакерский способ?

Upd. В принципе, у меня есть график операций над объектами. Каждый объект имеет либо сгенерированный UUID, либо идентификатор из базы данных. После вычисления оптимального графика мне нужно записать его в БД, но каждый идентификатор в таблице должен быть из последовательности. Поэтому мне нужно запросить некоторые идентификаторы из этой последовательности. Проблема в том, что циклический запрос медленный, поскольку БД действительно далек от меня, и я не могу просто потерять несколько секунд, выполняя десятки запросов в цикле. Поэтому мне нужно запросить все эти новые ID в одном запросе.

4b9b3361

Ответ 1

Вы можете использовать это:

select your_sequence.nextval
from (
   select level 
   from dual 
   connect by level < 1000
);

Ответ 2

Зависит от того, что вы хотите с ними делать.

Если вы вставляете их в таблицу, вы можете отменить seq.nexval во вставном запросе. (Как объясняется здесь: Как вставить несколько строк в oracle со значением последовательности?)

Если вы используете их в цикле, вы можете получить их в этом цикле.

Что вы хотите с ними сделать?

Как я знаю, вы не можете получить несколько значений из последовательности.

UPDATE: a_horse_with_no_name aswer можно улучшить следующим образом:

select your_sequence.nextval
from dual 
connect by level < 1000

:)

Ответ 3

select sequence_name.nextval
from dual
connect by level < number of values you want to print;