Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/01/2008, 06:58
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Re: Grave Problema - Tema Para Expertos -

Hola,

Parece que el algoritmo de ordenacion va cambiando entre las versiones en Oracle, presta especial atencion al orden en que aparecen los ROWIDs.

Ordenacion en 9i.
Código:
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE    9.2.0.1.0       Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

SQL> select rowid, id, data from t1 order by data;

ROWID                      ID       DATA
------------------ ---------- ----------
AAA6wMAABAAAMHyAAA          1          2
AAA6wMAABAAAMHyAAB          2          2
AAA6wMAABAAAMHyAAC          3          2
AAA6wMAABAAAMHyAAD          4          2
AAA6wMAABAAAMHyAAE          5          2
AAA6wMAABAAAMHyAAF          6          2

6 filas seleccionadas.
Ordenacion en 10g.

Código:
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production


SQL> select rowid, id, data from t50 order by data;

ROWID                      ID       DATA
------------------ ---------- ----------
AAAGqXAAEAAAAAOAAA          1          2
AAAGqXAAEAAAAAOAAB          2          2
AAAGqXAAEAAAAAOAAF          6          2
AAAGqXAAEAAAAAOAAD          4          2
AAAGqXAAEAAAAAOAAE          5          2
AAAGqXAAEAAAAAOAAC          3          2

6 filas seleccionadas.

Nunca se puede confiar en la ordenacion interna de datos que haga Oracle, simpre que se quieran los registros en un orden determinado, hay que decirlo de forma explicita en la consulta SQL.

Saludos