- - PR -
最大カーソル数を超えています
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-01-23 21:02
いつもお世話になっています。
現在ODP.NETを使用してプログラムを作成しているのですが、ループの最中でSELECT文を多数発行すると、「最大カーソル数を超えています」となってしまいます。 Oracleの設定でカーソルの限度数を変更できることは知っていますが、アプリケーションでの対応を望んでおります。 そこで質問なのですが、プログラムで明示的にカーソルをクローズすることは可能なのでしょうか? 例えば、 Dim dr As OracleDatareader Dim cmd As OracleCommand cmd = New OracleCommand(selectstr,Connection) dr = cmd.ExecuteReader dr.Close() dr.Dispose() cmd.Dispose() これでは閉じられていないみたいなのです。 どなたかよい方法を知っておられる方が居られましたらよろしくお願いいたします。 |
|
投稿日時: 2006-01-23 21:09
どんなSELECT文ですか?Begin〜Commitは行っていますか?そのSELECT文、あるいはトリガーからストアドプロシージャを呼んでいませんか?そのストアドプロシージャの中で、暗黙カーソルを使っていたりしませんか?[ メッセージ編集済み 編集者: 甕星 編集日時 2006-01-23 21:10 ] |
|
投稿日時: 2006-01-23 21:31
SELECT文はいたって普通のセレクト文です。
SELECT * FROM SYOHINMST のようなものがループ中に5個くらいです。 処理としてはVBソースで行っており、ストアドは使用しておりません BeginTransaction Loop 〜処理〜 End Loop Commit といった形です。 |
|
投稿日時: 2006-01-24 14:35
Oracle と ODP.NET のバージョンはいくつですか?
最大カーソル数はいくつに設定されていますか? |
|
投稿日時: 2006-01-24 15:03
cmd.Dispose() を先に実行すべきでは、と書いてみるテスト。
# VB6 のソースを移行したときに、VB.net が追加したコメントには # ガーベジコレクトされるまでオブジェクトを破棄できない、と # 書かれてあったりしました。 # ガーベジコレクトさせてみたらどうなるでしょう。 _________________ もしもし@RMAN 友の会 |
1