¿Cómo imitar SELECT ... LIMIT, OFFSET en OpenEdge SQL?

Es algo común en la mayoría de las implementaciones de SQL poder seleccionar un subconjunto de "ventana deslizante" de todas las filas devueltas en una consulta. Un caso de uso común para esto es la paginación. Por ejemplo, digamos que tengo una página de búsqueda con 10 resultados en cada página. Para implementaciones que soportenLIMIT yOFFSET palabras clave, la consulta utilizada para devolver resultados para cada página sería la siguiente: la página uno usaríaSELECT ... LIMIT 10 OFFSET 0, la página 2 usaríaSELECT ... LIMIT 10 OFFSET 10, la página 3 usaríaSELECT ... LIMIT 10 OFFSET 20, etc. (tenga en cuenta que laOFFSET entra en vigor antes deLIMIT).

De todos modos, estoy tratando de imitar esta funcionalidad en el motor SQL de OpenEdge. Ya he descubierto queSELECT TOP es básicamente equivalente aLIMITSin embargo, no puedo encontrar nada similar aOFFSET (No creo que haya unaexacto equivalente). SQL Server y Oracle también carecen de unaOFFSET, pero tienen una pseudocolumna llamadaROWCOUNT yROWNUM, respectivamente, que se pueden utilizar para imitar el comportamiento mediante selecciones anidadas (veraquí yaquí).

En el10.2B referencia de SQL doc, p49 hay una subseccion tituladaCláusula TOP eso dice en la parte inferior

SELECT TOP Es el equivalente funcional del oráculo.ROWNUM funcionalidad Tenga en cuenta queSELECT TOP se define simplemente en términos de un límite en el tamaño del conjunto de resultados, y el optimizador determina cómo usar este límite para el mejor acceso a los datos. Así,SELECT TOP no tiene todas las "reglas de procedimiento" utilizadas para definir el significado de OracleROWNUM frase.

Sin embargo, esto parece ser inexacto ya que de acuerdo conTOPLa sintaxis no puede usarse como predicado comoROWNUM puedo (por ejemplo, no puedo decirSELECT * FROM Customer WHERE TOP > 5 AND TOP < 10). Asi queTOP esno funcionalmente equivalente aROWNUM.

¿Hay alguna manera de imitarOFFSET, o estoy fuera de suerte?

Respuestas a la pregunta(1)

Su respuesta a la pregunta