ऐसा करने का केवल एक जटिल तरीका है, जो कि Oracle के साथ एक वास्तविक दर्द है। उन्हें बस एक LIMIT/OFFSET क्लॉज लागू करना चाहिए...
राउनम को बाद असाइन किया जाता है पंक्ति को जहां क्लॉज द्वारा चुना गया है, ताकि एक राउनम हमेशा 1 से शुरू होना चाहिए। where rownum > x
हमेशा असत्य का मूल्यांकन करेगा।
साथ ही, राउनम को सॉर्ट करने से पहले असाइन किया जाता है , इसलिए राउनम उसी क्रम में नहीं होगा जैसा कि आपका आदेश कहता है।
उप-चयन के साथ आप दोनों समस्याओं को हल कर सकते हैं:
select a,b,c, rn from
( select a,b,c, rownum rn from
( select a,b,c from the_table where x = ? order by c)
where rownum < Y)
where rn > X
यदि आपको सॉर्ट करने की आवश्यकता नहीं है (लेकिन केवल तभी), तो आप इसे सरल कर सकते हैं
select a,b,c, rn from
( select a,b,c, rownum rn from the_table where rownum < Y )
where rn > X