2011-11-28 8 views
19

Básicamente, necesito consultar cerca de mil NEXTVAL de una secuencia. Puedo consultarlos en un bucle, o puedo consultarlos a través de una unión con una tabla reeeeeally grande.Consulta varios NEXTVAL de la secuencia en una declaración

¿Hay alguna forma menos hacky?

Upd. Básicamente, tengo un cronograma de operaciones en objetos. Cada objeto tiene un UUID generado o una ID de la base de datos. Después de calcular un horario óptimo, necesito escribirlo en DB, pero cada ID en la tabla TIENE que ser de una secuencia. Entonces necesito consultar algunos ID de esa secuencia. El problema es que la consulta de bucle es lenta, ya que la base de datos está realmente lejos de mí, y no puedo perder varios segundos mientras ejecuto docenas de consultas en un bucle. Entonces necesito consultar todos esos ID nuevos en una consulta.

+0

También NB que pueda necesitar/quiero usar un fetchsize grande para evitar tener un RTT por fila devuelta: http://stackoverflow.com/a/17331855/32453 – rogerdpack

Respuesta

31

Puede utilizar esta:

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

¡Gracias! Funciona perfectamente. – F0RR

+0

también ven una versión ligeramente modificada de esto en la respuesta de Florin Ghita, también. – rogerdpack

14

Depende de lo que quieras hacer con ellos.

Si los inserta en una tabla, puede deshacerse de seq.nexval en la consulta de inserción. (Como se explica aquí: How can I insert multiple rows into oracle with a sequence value?)

Si los utiliza en un bucle, puede buscarlos en ese bucle.

¿Qué quieres hacer con ellos?

Como sé, no puede recuperar varios valores de la secuencia.

ACTUALIZACIÓN: aswer de a_horse_with_no_name se puede mejorar de esta manera:

select your_sequence.nextval 
from dual 
connect by level < 1000 

:)

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

Esto es idéntico a otras respuestas. –

+0

Esto le dará ** menos de ** que "la cantidad de valores que desea imprimir" –

Cuestiones relacionadas