我有一個返回引用遊標的過程。它需要4個參數,我正在使用C#。我已經看過了所有的過網例子,但不能得到其中的任何工作你如何使用Oracle ODP.net ExecuteReader與SP在C#中返回遊標?
這是我
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;
}
我用它工作得很好數據集,除了它正在採取20秒,每次得到500行,我必須做800次。我認爲使用數據讀取器,將數據加載到數組中,然後在數組上循環會比讀入數據集更快。 SP本身需要1秒才能返回,它在填充線上花費19秒。
@ user72226 - 如果問題是性能而不是功能,是否嘗試從SQL * Plus中的遊標提取? Oracle甚至可以在開始執行查詢之前打開遊標,因此完全可以快速打開遊標,但是當您開始讀取數據時,實際執行查詢需要時間。 – 2012-02-07 18:13:08
試過了,它在一秒鐘之內完成。延遲是填充C#端的數據集。我想測試一個datareader會更快,但找不到任何示例。 – user722226 2012-02-07 18:54:44