Ответ 1
Вы можете использовать это:
select your_sequence.nextval
from (
select level
from dual
connect by level < 1000
);
В принципе, мне нужно запросить около тысячи NEXTVAL из последовательности. Я могу запросить их в цикле, или я могу запросить их через соединение с reeeeeally большой таблицей.
Есть ли еще менее хакерский способ?
Upd. В принципе, у меня есть график операций над объектами. Каждый объект имеет либо сгенерированный UUID, либо идентификатор из базы данных. После вычисления оптимального графика мне нужно записать его в БД, но каждый идентификатор в таблице должен быть из последовательности. Поэтому мне нужно запросить некоторые идентификаторы из этой последовательности. Проблема в том, что циклический запрос медленный, поскольку БД действительно далек от меня, и я не могу просто потерять несколько секунд, выполняя десятки запросов в цикле. Поэтому мне нужно запросить все эти новые ID в одном запросе.
Вы можете использовать это:
select your_sequence.nextval
from (
select level
from dual
connect by level < 1000
);
Зависит от того, что вы хотите с ними делать.
Если вы вставляете их в таблицу, вы можете отменить seq.nexval во вставном запросе. (Как объясняется здесь: Как вставить несколько строк в oracle со значением последовательности?)
Если вы используете их в цикле, вы можете получить их в этом цикле.
Что вы хотите с ними сделать?
Как я знаю, вы не можете получить несколько значений из последовательности.
UPDATE: a_horse_with_no_name aswer можно улучшить следующим образом:
select your_sequence.nextval
from dual
connect by level < 1000
:)
select sequence_name.nextval
from dual
connect by level < number of values you want to print;