第一次调用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 对象。” 用的是企业库。 有高手帮忙看看什么情况么?
//添加参数
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 对象。” 用的是企业库。 有高手帮忙看看什么情况么?
解决方案 »
- 如何对一个字符串尾数进行range分区?
- ODBC访问oracle, 自动发送"SELECT ROWID"的问题
- 求 Oracle database 10g sql 开发指南的电子版
- orcale10g 数据库启动后报错不能正常连接
- 無人能解 敬妙觸發 在線送分﹗﹗﹗ 500分
- 删除重复的记录,但每种至少保留其中一条?
- 怎么解决以下问题.删用户时报以下错.
- 请教一个将a用户下所有表或其它对象的select,update,insert等权限一次授予b用户的语句?先谢谢大家
- oracle9I用imp语法权限倒不进去的问题
- 求大神指教 SQL连接查询问题
- 求oracle存储过程写法
- 请问为什么我安装的oracle 11g express edition没有可视化工具?
(
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;
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类型
Oracle.DataAccess.Client.OracleConnection
我的那个执行里面的连接不是这个而是微软自带的
但是为什么会报这个错啊