Не мисля, че има някъде в документацията, която гаранции реда, в който данните ще бъдат върнати.
Има един стар Нишка за Том Кайт от 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.