第一次调用Oracle11G的存储过程   代码:DbCommand dbcmd = db.GetStoredProcCommand("getinstockbillanddetails");
            //添加参数
            db.AddInParameter(dbcmd, "instockid", DbType.Int32, int.Parse(stockId));
            db.AddInParameter(dbcmd, "primaryname", DbType.String, "asdas");
            db.AddInParameter(dbcmd, "attachname", DbType.String, "asdas");
            OracleParameter oraPara1 = new OracleParameter("cur1", OracleDbType.RefCursor, ParameterDirection.Output);
            OracleParameter oraPara2 = new OracleParameter("cur2", OracleDbType.RefCursor, ParameterDirection.Output);            //添加参数到cmd
            dbcmd.Parameters.Add(oraPara1);
            dbcmd.Parameters.Add(oraPara2);            DataSet ds = db.ExecuteDataSet(dbcmd); 但是每次执行到这个句:dbcmd.Parameters.Add(oraPara1);就报错“OracleParameterCollection 只接受非空的 OracleParameter 类型对象,不接受 OracleParameter 对象。”    用的是企业库。 有高手帮忙看看什么情况么?

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE GetInStockBillAndDetails
    (
       InStockId IN NUMBER,
       PrimaryName IN VARCHAR2,
       AttachName IN VARCHAR2,
       cur_out_1 out sys_refcursor,
       cur_out_2 out sys_refcursor
    )
    AS
    BEGIN
       --入库单
       open cur_out_1 for
         select billCode,billType,IsEnable from Bill where billId=InStockId;   open cur_out_2 for
         select bill_det_Code,StuffName,StuffMoney from Bill_Det where billId=InStockId; 
    END;
      

  2.   


          IList<Alarmhist> alarms = new List<Alarmhist>();            IDbCommand cmd = oracleConnection.CreateCommand();
                cmd.CommandText = SQL + "where a.DATETIME between :DT1 and :DT2 order by a.DATETIME";            cmd.Parameters.Add(new OracleParameter(":DT1", begin));
                cmd.Parameters.Add(new OracleParameter(":DT2", end));
                cmd.CommandTimeout = 300;            IDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    alarms.Add(Parse(reader));
                }
                reader.Close();这样是OK的,前提是oracleConnection是Oracle.DataAccess.Client.OracleConnection类型
      

  3.   

    我也遇到这个错我的执行方法是调用封装好的我怀疑是
     Oracle.DataAccess.Client.OracleConnection 
     我的那个执行里面的连接不是这个而是微软自带的
     但是为什么会报这个错啊