2012-10-04 63 views
1

我是Oracle的新手。我們公司對使用Oracle和.Net的項目有一個要求。所以我試圖運行一個演示應用程序。我正在使用Oracle 10g XE作爲數據庫和VS2010。如何從.NET調用Oracle存儲過程(PL/SQL)?

我用一個簡單的select查詢編寫了一個程序,它被編譯了(通過google搜索得到了這個程序格式)。

The procedure, which got compiled

我跑從XE儀表板本身的SQL命令提示存儲過程。這是結果:

enter image description here

現在我在C#編寫代碼來調用存儲過程:

string sqlCon = "Data Source=xe;Persist Security Info=True;User  ID=sa;Password=password;Unicode=True;Provider=OraOLEDB.Oracle;"; 
OleDbConnection Con = new OleDbConnection(sqlCon); 
OleDbCommand cmd = new OleDbCommand(); 

DataSet ds = null; 
OleDbDataAdapter adapter; 

try 
{ 
    Con.Open(); 
    ////Stored procedure calling. It is already in sample db. 
    cmd.CommandText = "TESTPROC"; 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Connection = Con; 

    ds = new DataSet(); 
    adapter = new OleDbDataAdapter(cmd); 
    adapter.Fill(ds, "Users"); 

    return ds.Tables[0]; 
} 
catch (Exception ex) 
{ 
    throw new Exception(ex.Message); 
} 

該代碼塊沒有拋出任何異常。它被執行,但我收到的是一個空的數據集。但是當我試圖直接使用查詢獲取數據時,我得到了結果。

那麼,我試圖訪問存儲過程的方式是否正確?或者我的存儲過程中有任何錯誤?任何人都可以指出錯誤或最好的方式來做到這一點?

在此先感謝。

回答