sql >> Base de Datos >  >> RDS >> Oracle

SELECCIONAR * DE LA TABLA (función canalizada):¿puedo estar seguro del orden de las filas en el resultado?

No creo que haya ningún lugar en la documentación que garantice el orden en que se devolverán los datos.

Hay un viejo Hilo de Tom Kyte de 2003 (así que podría estar desactualizado) que establece que confiar en el orden implícito no sería aconsejable, por las mismas razones por las que no confiaría en el orden en SQL ordinario.

Para estar seguro, debe hacer lo que siempre haría en una consulta, establecer un ORDEN explícito, si desea ordenar los resultados de la consulta.

Habiendo dicho eso, tomé su función y ejecuté 10 millones de iteraciones, para verificar si alguna vez se rompió el orden implícito; no lo fue.

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.