• 締切済み

Oracleでページ単位にレコードセットを取得

Oracleでページ単位にレコードセットを取得を使用としています。 たとえば、1万件のデータを500頁に分割して1頁目を表示するといった使い方です。 adoでのやり方はわかるのですが、クライアントカーソルになっているため、条件に一致するデータが大量だと、メモリリークで正常に動作しなくなってしまいます。 サーバサイドでページ管理を行う方法はないでしょうか? (現状ではMicrosoftのOracle OLE DB ProviderでDB接続しています。)

  • WenYu
  • お礼率45% (5/11)

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

うろ覚えのため具体的に書けませんが、「Top10を表示させる方法」で良いのでは? Fromで先にselectしてRowIDを利用する方法だったと思うのですが。 ただしOracle9i以降だったかな?

WenYu
質問者

お礼

ありがとうございます。 adoのrecordcountプロパティ等を使ったようなものを考えていたのですが、 どうもだめそうです。

関連するQ&A

  • ORACLEのアクセス

    oracle10gで構築したDBをoracle9iのクライアントからアクセス可能でしょうか。(SQLを参照したりVBで作成しらプログラムからODBC/OLE形式でアクセスする)

  • ActiveReportsとoracle

    vb6.0で ActiveReportsに、oracleデータを表示させたいのですが 接続の仕方がわかりません。 以下ヘルプファイルに、OLE DB の接続方法が載っていますが oo4oを推奨しています。 ご存知のかた教えてください。 ActiveReportsのサンプルは、全てAccessを使用しているのでわかりません。 ADO(ActiveX Data Objects)を使った接続 ■Microsoft OLE DB Provider for Oracleを使用したOracleへの接続 ConnectionStringプロパティ "Provider=MSDAORA.1;User ID=<user id>;Data Source=<servername>;Persist Security Info=False" ※ActiveReportsに関わらず、OLE DBプロバイダ経由の接続では、個々のデータベースアーキテクチャの違いを完全に吸収できない可能性があります。Oracleをデータソースとしてレポートを作成する場合には、Oracle社から提供されているOracle Objects for OLE(OO4O)を使用し、アンバウンド形式でレポートを作成する方法をお勧めします。

  • Oracleへのリンクサーバー設定について

    お世話になります。 下記環境におきまして、SQL ServerよりOracleへリンクサーバーを作成しようとしたところ、 「リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"のデータソースオブジェクトを初期化できません。 リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"から、メッセージ"Oracle"クライアントと ネットワークコンポーネントが見つかりません。これらのコンポーネントはOracle Corporationから提供され、 Oracle Version 7.3.3(またはそれ以降)のクライアント ソフトウェアの一部としてインストールされます。 プロバイダは、これらのコンポーネントがインストールされるまで機能しません。"が返されました。 (Microsoft SQL Server,エラー:7303)」 となり、作成に失敗してしまいます。 SQL Serverには10gのOracleクライアントをインストールしてあるのですが、原因がわかりません。 どなたか、同じ原因を経験され、解決された方はいらっしゃいますか。 もし、お分かりでしたら、ご教授頂きたいのですが。 よろしくお願いいたします。 尚、SQL Serverは運用の関係上、Oracleクライアントインストール後、再起動は行っておりません。 環境 OS:Windows2003 DB:SQL Server 2005 Oracle:10g

  • oracleとexcelのADOによる連携について

    お世話になります。 excelからADOでoracleのデータベースにある テーブルの必要なデータのみを抽出してexcelに 書き出そうとしています。 excelのvbaコードで、まず、ADOコネクションの生成として、 「cn.Open "Provider=OraOLEDB.Oracle;Data Source=" & "DB名" & ";User ID=hpsuser;Password=○○○;", "○○○", "○○○"」と書き、 ADOレコードセットの生成で、 「 rs.Open "~(1)~", cn, adOpenDynamic, adLockOptimistic, adCmdText」 と書いていますが、上記「~(1)~」の部分がかなり長いクエリ文になっているからなのか、 エラーがかかってしまいます。 単純なテーブルのデータを呼び出す事しかできないのか、又、 長いクエリ文のデータを抽出したい場合どの様にしたら良いのか、 どなたかご親切な方、ご教示頂けます様、宜しくお願いいたします。

  • oracle application server

    下記環境で、oracleと連係したwebページを公開しようと考えています。 oracle application serverは必要なのでしょうか? サーバー:unix DB:oracle8i JDBC利用 サーバー側でデータを登録・追加・削除などを行う。 クライアント側ではデータを検索・表示するのみ。 WEB経由の外部利用者をターゲットにしているのですが、サーバーにORACLE APPLICATION SERVERをインストールする必要はあるのでしょうか?

  • ORACLEの互換問題について

    はじめまして。 DBにORACLEを使って業務システムを開発している者です。 現在の環境は サーバ OS:Windows2003 Server DB:Oracle9i Release 2 クライアント  OS:WindowsXP DB:Oracle8.0.5 となっているんですが、Oracle9iに対してOracle8.0.5から データのエクスポートは可能なのでしょうか? 現段階ではサーバから直接エクスポートする方向で考えているんですが・・・ 宜しければ助言の方をお願い致します。

  • VBA Oracle接続について

    現在、Access2013+oo4oでOracle11gのDBに接続しています。 今回、DBをOracle12cに変更しようとしています。 Oracle12cよりoo4oがサポートされなくなり、使用することが出来ないとの事で ODP.NETでの接続に変更しようとしていますが可能なのでしょうか? ちなみに以下を行ったところ、うまくいきませんでした。 (1)Oracle.DataAccess.dllのインストール OracleClientのインストールをカスタムで行い「Oracle Data Provider for .NET」 を個別にインストールしました。結果以下にDllがインストールされました。 C:\app\client\administrator\product\12.2.0\client_1\ODP.NET\bin\ 4\Oracle.DataAccess.dll (2)参照設定で追加 上記のdllをAccess2013の参照設定より参照の追加をしようとすると以下の エラーになりました。 「指定されたファイルへの参照は登録できません」となりました。 以上、宜しくお願いします。

  • VB.NET Oracle接続 32、64bit

    VB.NET 2010でOracle11gに接続するプログラムを作っていますが、 接続方法がいまいちわからずに困っています。 プログラムを動かすサーバーはWindows Server 2008 R2の64bitだったので、 Oracle Clientも合わせた方がいいのかなと思い、64bit版をインストールしました。 ASP.NETのWEBアプリでは以下の接続文字列を用いてADO接続できました。 パラメータ値は例です。 (Web.configに記述) <connectionStrings> <add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1" providerName="System.Data.OleDb" /> </connectionStrings> 次に、コンソールプログラムを作成し、同じサーバーで上記と同様の接続文字列で 接続しようとしましたが、エラーとなり接続できませんでした。 いろいろ記述を変えても接続できませんでしたが、最終的にOracle Clientの 32bit版を64bit版と違うフォルダにインストールし、以下の接続文字列で接続 できました。(INIファイルに記載) ConnectionString=Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1 この状態でWEBアプリの方は何を使っているのかと思い、64bit版のインストールフォルダを リネームしたところ、WEBアプリの方は接続できなくなりました。 現状では32bitと64bitのOracle Clientが両方必要な状況ですが、本来ならどちらかだけで すむと思います。 32bitと64bitで接続文字列が変わるという情報は得られませんでした。 何がまずいのでしょうか? 最初から32bit版をインストールすれば良かったのでしょうか。

  • ORACLE DBへ初期化していない領域のレコードを

    ORACLE DBへ初期化していない領域のレコードを INSERTで追加した場合、どのような値のデータ(文字コード)が 格納されるのでしょうか?

  • VBAでOracleにSQL発行(ADO)

    ExcelのVBAからOracleにADOで登録したく下記のコードを作成しましたが コンパイルで"変数定義がされていません”に成ってしまいます。 参照設定に何か必要なのでしょうか? ----------------------------------------------- 'ADO用のオブジェクト変数の宣言 Dim cn As New ADODB.Connection ← ここでエラー Dim rs As New ADODB.Recordset Dim rownum As Long Dim colnum As Integer 'ADOコネクションの生成 cn.Open "Provider=OraOLEDB.Oracle;Data Source=" & ActiveSheet.Cells(26, 1) & ";User ID=scott;Password=tiger;", "scott", "tiger" 'ADOレコードセットの生成(全データを返すレコードセットの生成) rs.Open "select * from emp", cn, adOpenDynamic, adLockOptimistic, adCmdText ... ... ...