私は参照カーソルを返すプロシージャを持っています。それは4つのパラメータを取ると私はC#を使用しています。私はすべてのネット経由の例について見てきましたが、それらのいずれかが、これは私がそれを毎回20秒を取ったことを除いて、私はうまく働いたデータセットを使用していたC#でカーソルを戻すSPでOracle ODP.net ExecuteReaderを使用するにはどうすればよいですか?
public static int test(int test_id, int progr, int setID, string BFilter)
{
object cur1 = System.DBNull.Value;
string spname = "SP.GetValues";
using (Oracle.DataAccess.Client.OracleCommand command = DB.GetStoredProcCommand(spname, test_id, progr, setID, BFilter, cur1))
{
using (OracleDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
//load array
}
}
}
int t = 1;
return t;
}
を持っているものである
動作させることはできません500行を取得するには、私は800回行う必要があります。私はdatareaderを使用して配列にロードし、配列をループすることはデータセットを読み込むよりも速いと考えました。 SP自体は帰還に1秒かかり、充填ラインに19秒を費やします。
@ user72226 - 問題が機能ではなくパフォーマンスである場合は、SQL * Plusなどのカーソルから取り出してみましたか? Oracleでは、問合せの実行を開始する前にカーソルをオープンすることができるため、カーソルがすぐに開かれる可能性はありますが、データのフェッチを開始するときに実際に問合せを実行するには時間がかかります。 –
それを試して、それを1秒以内にします。遅延は、C#側のデータセットを埋めることにあります。私は、データ・アーダが高速であるかどうかテストしたいが、例は見つけられない。 – user722226