将OracleParameter.Value转换为Int32
我有一个存储过程调用,如下所示:
using (OracleConnection con = new OracleConnection(ConfigurationManager.AppSettings["Database"])) using (OracleCommand cmd = new OracleCommand("Package.Procedure", con)) { Int32 existsCount; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("successCount", OracleDbType.Int32, 0, ParameterDirection.InputOutput); cmd.Parameters.Add("BusinessId", OracleDbType.Int64, listRec.BusinessId, ParameterDirection.Input); con.Open(); cmd.ExecuteScalar(); con.Close(); existsCount = Convert.ToInt32(cmd.Parameters["successCount"].Value); return (existsCount); }
但在这一行:
existsCount = Convert.ToInt32(cmd.Parameters["successCount"].Value);
它抛出exception“无法将类型为’Oracle.DataAccess.Types.OracleDecimal’的对象强制转换为’System.IConvertible’。”
有什么想法吗? 谢谢。
关于什么
existsCount = int.Parse(cmd.Parameters["successCount"].Value.ToString());
你也可以尝试:
Oracle.DataAccess.Types.OracleDecimal d = (Oracle.DataAccess.Types.OracleDecimal)cmd.Parameters["successCount"].Value; if( d.IsNull ) existsCount = 0; else existsCount = d.ToInt32( );
它的使用效率更高
Convert.ToInt32((decimal)(OracleDecimal)(cmd.Parameters["successCount"].Value))
我建议您转换为String
,然后将String
转换为Integer
。
Dim tmpIdSesiónCalificación As String = parametroIdSesiónCalificación.Value.ToString _idSesiónCalificación = Convert.ToInt32(tmpIdSesiónCalificación)