• ベストアンサー

Oracle10のソートについて

お世話になります。 今までXP-ORACLE9-VB6で開発していたプログラムを VISTA-ORACLE10-VB6に移植して使用するのですが、 ORDER BYがない場合の抽出が異なっているようなんですが、 ORACLE9と同じように抽出するには、 ORDER BY をつけるしかないのでしょうか。 プログラムの本数がかなりあるので何かいい方法があれば ご教授頂きたくよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • uresiiwa
  • ベストアンサー率45% (49/107)
回答No.2

ORDER BYを使わずにレコードの取得順序を制御する方法はありません。 Oracle9においても、ORDER BY句がないと、SELECT結果の並び順に何の決まりもないため移植しなくてもあぶないです。 具体的には、エクスポート・インポートや、セグメントの結合でレコードの物理ROWIDが変わったときや、統計情報が変化して実行計画が変わった場合に並び順が変わってしまうことでしょう。 #移植すると並び順が変わるのは10gだからではなく、物理ROWIDが変わるためでしょう。 そういう意味では、いままでORDER BYなしで耐えていたのは幸いでした。移植を機にORDER BYを組み込んだほうがよいです。

090303kan
質問者

お礼

お礼が遅れまして申し訳ありません。 確かに今までも出力順が変になることがあったように思います。 その時に徐々に見直しをしておくべきだったと反省しています。 全てのプログラムを見直してORDER BYをつけるようにします。 ありがとうございました。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

http://otn.oracle.co.jp/forum/thread.jspa?threadID=35004433 がんばって「order by」指定をするしかないかと。

090303kan
質問者

お礼

お礼が遅れ申し訳ありません。 気がついたところからorder byを指定していきます。 ありがとうございました。

関連するQ&A