传递数组参数调用Oracle存储过程.解决方法
传递数组参数调用Oracle存储过程...
是必须要使用Oracle.DataAccess.Client.OracleCollectionType.PLSQLAssociativeArray吗,这个在System.Data.OracleClient里没有相应的类吗?用了某个框架的数据库操作类,有这样的方法:
private static OracleCommand BuildIntCommand(OracleConnection con, string StoredProcName, IDataParameter[] Parameters)
{
OracleCommand command = BuildQueryCommand(con, StoredProcName, Parameters);
command.Parameters.Add(new Oracle.DataAccess.Client.OracleParameter("ReturnValue", Oracle.DataAccess.Client.OracleDbType.Int16, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));
return command;
}
老是出错,提示:OracleParameterCollection 只接受非空的 OracleParameter 类型对象,不接受 OracleParameter 对象
头都大了,急呀
------解决方案--------------------
Parameters 你这个参数是空的。你没赋值
------解决方案--------------------
如果不兼容则造成编译不通过。
错误是在编译的情况下出现的还是运行的情况下出现的?
如果编译时候出现错误,按下面的代码修改:
command.Parameters.Add(new OracleParameter(":ReturnValue", 100));
------解决方案--------------------
创建输入、输出和返回值的 OracleParameter 对象,并将其添加到 OracleCommand 对象的参数集合中。
cmd.Parameters.Add("reccount", OracleType.Number).Direction =
ParameterDirection.Output;
该行代码是以下两行代码的简写形式:
cmd.Parameters.Add("reccount", OracleType.Number);
cmd.Parameters["reccount"].Direction = ParameterDirection.Output;
------解决方案--------------------
是必须要使用Oracle.DataAccess.Client.OracleCollectionType.PLSQLAssociativeArray吗,这个在System.Data.OracleClient里没有相应的类吗?用了某个框架的数据库操作类,有这样的方法:
private static OracleCommand BuildIntCommand(OracleConnection con, string StoredProcName, IDataParameter[] Parameters)
{
OracleCommand command = BuildQueryCommand(con, StoredProcName, Parameters);
command.Parameters.Add(new Oracle.DataAccess.Client.OracleParameter("ReturnValue", Oracle.DataAccess.Client.OracleDbType.Int16, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));
return command;
}
老是出错,提示:OracleParameterCollection 只接受非空的 OracleParameter 类型对象,不接受 OracleParameter 对象
头都大了,急呀
------解决方案--------------------
Parameters 你这个参数是空的。你没赋值
------解决方案--------------------
如果不兼容则造成编译不通过。
错误是在编译的情况下出现的还是运行的情况下出现的?
如果编译时候出现错误,按下面的代码修改:
command.Parameters.Add(new OracleParameter(":ReturnValue", 100));
------解决方案--------------------
创建输入、输出和返回值的 OracleParameter 对象,并将其添加到 OracleCommand 对象的参数集合中。
cmd.Parameters.Add("reccount", OracleType.Number).Direction =
ParameterDirection.Output;
该行代码是以下两行代码的简写形式:
cmd.Parameters.Add("reccount", OracleType.Number);
cmd.Parameters["reccount"].Direction = ParameterDirection.Output;
------解决方案--------------------
- C# code
... cmd.CommandText = "sp_test"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new OracleParameter("a", 1)); cmd.Parameters.Add(new OracleParameter("b", OracleType.Number)); cmd.Parameters["b"].Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); MessageBox.Show(cmd.Parameters["b"].Value.ToString()); conn.Close();
我的异常网推荐解决方案:oracle存储过程,http://www..net/oracle-develop/177537.html