Oracle ROWNUM को क्रमिक रूप से मान प्रदान करता है क्योंकि पंक्तियाँ क्वेरी द्वारा निर्मित होती हैं - इस प्रकार, प्राप्त की गई पहली पंक्ति को ROWNUM =1 प्राप्त होता है, दूसरी पंक्ति को प्राप्त करने के लिए ROWNUM =2 प्राप्त होता है, प्राप्त की गई तीसरी पंक्ति को ROWNUM =3, आदि प्राप्त होता है। सूचना - एक पंक्ति के लिए असाइन किए जाने के लिए ROWNUM=3 दो पूर्ववर्ती पंक्तियाँ अवश्य प्राप्त की जानी चाहिए। और यही कारण है कि आपकी क्वेरी कोई पंक्ति नहीं लौटाती है। आप तीसरी पंक्ति के लिए डेटाबेस से पूछ रहे हैं - लेकिन पंक्ति 1 और 2 कभी नहीं लाई गई हैं।
प्रदर्शित करने के लिए, निम्नलिखित प्रश्नों को चलाने का प्रयास करें:
SELECT S.* FROM SALARY S; -- Should return all rows
SELECT ROWNUM, S.* FROM SALARY S; -- Should return all rows with ROWNUM prepended
SELECT ROWNUM, S.* FROM SALARY WHERE ROWNUM=3; -- Should return no rows
अपनी समस्या को हल करने के लिए, निम्न प्रयास करें:
SELECT ROW_NUMBER FROM
(SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S)
WHERE ROW_NUMBER = 3;
साझा करें और आनंद लें।