1

ADO レコード セットと Oracle データベースを使用して従来の ASP で記述されたアプリケーションを PHP5 および OCI8 に移植する可能性を調査しています。パフォーマンスのために、バインド変数を使用したスト​​アド プロシージャとクエリが多数あります。

私の問題は、MoveFirst、MoveNext、MovePrevious と一緒に ADO クラスと EOF および BOF インジケーターを使用するのが面倒になったことです。

OCI モジュールに同様の機能が見つかりません。希望はありますか?

4

1 に答える 1

0

これは私の専門分野の範囲外ですが、ADO以外の同等の機能は、データベースAPIに固有の機能ではなく、データセットを配列に取得してから、標準の配列ナビゲーション手法を使用することだと思います。


一度にすべてをロードしたくないほど大きなデータセットを扱っている場合は、結果のナビゲートを開始する前に、クエリで結果セットを絞り込む方法を見つけるようにしてください。たとえば、結果セットを読み込んでから最後の行に移動した場合、クエリで最初に最後の行を返すだけで十分です。結果セットを取得してから、特定の行(または行のセット)に対してループ(またはフィルタリング)する場合は、Oracleにそれを実行させると、パフォーマンスが大幅に向上することがわかります。

Oracleでこの種のナビゲーションを行うために配列を使用する必要がある理由は、Oracleカーソルが常に前方専用であるためです(ADOでは、動的カーソル、キーセットカーソル、および静的カーソルもあります)。大きな結果セット全体を実際にナビゲートできるようにする必要がある場合は、すべてを配列にロードすることが唯一の選択です。

于 2010-07-15T14:09:55.007 に答える