OleDataParameter不是这样用的,要用OleDbAdapterpublic void AddOleDbParameters() 
 {
 // ...
 // create myDataSet and myDataAdapter
 // ...
   myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", OleDbType.VarChar, 80).Value = "toasters";
   myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", OleDbType.Integer).Value = 239;
   myDataAdapter.Fill(myDataSet);
 }

解决方案 »

  1.   

    如果是多个参数在Oracle中参数和?的顺序要一一对应。
      

  2.   

    对阿,楼上说的我都注意了,但是在执行普通 SQL 语句时都是可以的,只是在存储过程中调用出现问题。我在调试时如果存储过程不是用 Parameter 的话是可以正常执行的,只是在换了参数后执行异常,这样就没法把程序写的灵活,只能针对每一个存储过程写一段执行代码,太累了!还请大家多多指点
      

  3.   

    存储过程中有参数不能直接引用,我有两种办法:1、转换成sql语句,例如string strSQL="exec StoreProcedureName"2、用楼上bitsbird(一瓢.net)的方法。