FetchSize に値を割り当てる必要があります。rowsize は、リフレクションを使用して datareader から受け取ることができます。
しかし、行数が必要です。rowsize * 100000 (rowcount ではなく) としてハードコーディングできますか。
executedataReader は複数のストアド プロシージャに使用され、行数を取得できません。
OracleDataReader dr = command.ExecuteReader();
Int32 rowCount = 100000; //in this case actual result will be just 20k only. will it have any issue?
FieldInfo fi = dr.GetType().GetField("m_rowSize", BindingFlags.Instance | BindingFlags.NonPublic);
Int32 rowSize = Convert.ToInt32(fi.GetValue(dr));
dr.FetchSize = rowCount * rowSize;
while (dr.Read())
{
string myField = (string)dr[0];
Console.WriteLine(myField);
}
これを修正することで何かデメリットはありますか?