2013-05-03 215 views
0

我想打電話給在C#中的Oracle存儲過程是這樣調用Oracle存儲過程

OdbcDataAdapter da = new OdbcDataAdapter(); 
      da.SelectCommand = new OdbcCommand(); 
      da.SelectCommand.Connection = con; 
      da.SelectCommand.Connection.Open(); 
      da.SelectCommand.CommandText = "KAMRAN.ATTN"; 
      da.SelectCommand.CommandType = CommandType.StoredProcedure; 

      da.SelectCommand.ExecuteNonQuery(); 
      da.SelectCommand.Connection.Close(); 

      Label3.Text = "Attendance Posted Successfully"; 

但我出這個錯誤

ERROR [42000] [Oracle][ODBC][Ora]ORA-00900: invalid SQL statement 

請任何一個可以告訴究竟我我錯過了調用這個procedure.plz的幫助!

+0

YES'KAMRAN'是模式和'ATTN'是過程名稱 – user1915635 2013-05-03 11:12:58

+0

可能的[從C#.net?調用Oracle存儲過程]的副本(http://stackoverflow.com/questions/3940587/calling-oracle-stored-程序從c網) – 2013-05-03 11:13:51

+0

是試過但同樣的錯誤 – user1915635 2013-05-03 11:14:23

回答

0

你可以試着反語句:

da.SelectCommand.CommandType = CommandType.StoredProcedure; 
da.SelectCommand.CommandText = "KAMRAN.ATTN"; 

而且,也許嘗試添加:

da.SelectCommand.Parameters.Clear(); 

da.SelectCommand.CommandType = CommandType.StoredProcedure; 
da.SelectCommand.CommandText = "KAMRAN.ATTN"; 

我想你也應該使用一個DataTable

   DataTable dt = new DataTable(); 
       da.Fill(dt); 
       return dt; 

也許這也應該是一個Oracle數據適配器:

OracleDataAdapter da = new OracleDataAdapter(); 
da.SelectCommand = new OracleCommand(); 

所以,你應該有:

OracleDataAdapter da = new OracleDataAdapter(); 
da.SelectCommand = new OracleCommand(); 
da.SelectCommand.Connection = con; 
da.SelectCommand.Connection.Open(); 
da.SelectCommand.Parameters.Clear(); 
da.SelectCommand.CommandType = CommandType.StoredProcedure; 
da.SelectCommand.CommandText = "KAMRAN.ATTN"; 


DataTable dt = new DataTable(); 
da.Fill(dt); 
return dt; 
da.SelectCommand.Connection.Close(); 

我希望這有助於以任何方式。