No estoy tan familiarizado con Oracle como me gustaría. Tengo unos 250k registros, y quiero mostrarlos 100 por página. Actualmente tengo un procedimiento almacenado que recupera todo un cuarto de millón de registros en un conjunto de datos usando un adaptador de datos y conjunto de datos y el adaptador de datos. Método de relleno (conjunto de datos) en los resultados del proceso almacenado. Si tengo "Número de página" y "Número de registros por página" como valores enteros que puedo pasar como parámetros, ¿cuál sería la mejor manera de recuperar solo esa sección en particular? Digamos que si paso 10 como número de página y 120 como número de páginas, desde la declaración de selección me daría la 1880a hasta la 1200a, o algo así, mis cálculos en mi cabeza podrían estar apagados.Paginación con Oracle
que estoy haciendo esto en .NET con C#, pensaron que no es importante, si puedo hacerlo bien en el lado de SQL, entonces yo debería ser fresco.
Actualización: Pude usar la sugerencia de Brian, y está funcionando muy bien. Me gustaría trabajar en algo de optimización, pero las páginas vienen en 4 a 5 segundos en lugar de en un minuto, y mi control de paginación pudo integrarse muy bien con mis nuevos procesos almacenados.
Es rownum una palabra reservada? –
Sí, es una columna 'incorporada' que admite Oracle, siempre comienza en 1 y se incrementa para cada fila. Por lo tanto, en este fragmento de código, si tiene 1000 filas, se aplica el orden de clasificación y luego a cada fila se le asigna un rownum. Las selecciones externas utilizan esos números de fila para ubicar la "página" que está buscando según su tamaño de página. –
Esto es bueno, pero terriblemente lento en selecciones grandes, solo compruebe cuál será el momento de seleccionar 0 a 1000 y 500,000 a 501,000 ... Estaba usando este tipo de estructura selecta ahora estoy buscando una solución alternativa. – newhouse