在c#中调用oracle存储过程

时间:2013-05-03 10:57:13

标签: oracle c#-4.0 stored-procedures

我试图在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帮助!

1 个答案:

答案 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();

我希望这会有所帮助。