मुझे नहीं लगता कि दस्तावेज़ीकरण में कहीं भी ऐसा है जो गारंटी देता है जिस क्रम में डेटा वापस किया जाएगा।
एक पुराना टॉम काइट थ्रेड 2003 से (इसलिए हो सकता है पुराना हो) जिसमें कहा गया है कि निहित आदेश पर भरोसा करना उचित नहीं होगा, उन्हीं कारणों से जैसे आप साधारण SQL में ऑर्डर पर भरोसा नहीं करेंगे।
सुरक्षित रहने के लिए, आपको वही करना चाहिए जैसा आप हमेशा एक प्रश्न में करते हैं, यदि आप क्वेरी परिणामों का आदेश देना चाहते हैं, तो एक स्पष्ट ORDER BY बताएं।
यह कहने के बाद कि मैंने आपका कार्य लिया है और 10 मिलियन पुनरावृत्तियों को चलाया है, यह जाँचने के लिए कि क्या निहित आदेश कभी तोड़ा गया था; यह नहीं था।
SQL> begin
2 for i in 1 .. 10000000 loop
3 for j in ( SELECT a.*, rownum as rnum FROM table(temp_func()) a ) loop
4
5 if j.x <> j.rnum then
6 raise_application_error(-20000,'It broke');
7 end if;
8 end loop;
9 end loop;
10 end;
11 /
PL/SQL procedure successfully completed.