我试图在c#中调用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 :(得分: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();
我希望这会有所帮助。