- ベストアンサー
Oracle10のソートについて
お世話になります。 今までXP-ORACLE9-VB6で開発していたプログラムを VISTA-ORACLE10-VB6に移植して使用するのですが、 ORDER BYがない場合の抽出が異なっているようなんですが、 ORACLE9と同じように抽出するには、 ORDER BY をつけるしかないのでしょうか。 プログラムの本数がかなりあるので何かいい方法があれば ご教授頂きたくよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ORDER BYを使わずにレコードの取得順序を制御する方法はありません。 Oracle9においても、ORDER BY句がないと、SELECT結果の並び順に何の決まりもないため移植しなくてもあぶないです。 具体的には、エクスポート・インポートや、セグメントの結合でレコードの物理ROWIDが変わったときや、統計情報が変化して実行計画が変わった場合に並び順が変わってしまうことでしょう。 #移植すると並び順が変わるのは10gだからではなく、物理ROWIDが変わるためでしょう。 そういう意味では、いままでORDER BYなしで耐えていたのは幸いでした。移植を機にORDER BYを組み込んだほうがよいです。
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
回答No.1
http://otn.oracle.co.jp/forum/thread.jspa?threadID=35004433 がんばって「order by」指定をするしかないかと。
質問者
お礼
お礼が遅れ申し訳ありません。 気がついたところからorder byを指定していきます。 ありがとうございました。
お礼
お礼が遅れまして申し訳ありません。 確かに今までも出力順が変になることがあったように思います。 その時に徐々に見直しをしておくべきだったと反省しています。 全てのプログラムを見直してORDER BYをつけるようにします。 ありがとうございました。