ho una chiamata di stored procedure che va come questo:Convertire OracleParameter.Value a 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);
}
Ma su questa linea:
existsCount = Convert.ToInt32(cmd.Parameters["successCount"].Value);
Esso genera l'eccezione "Impossibile eseguire il cast oggetto di tipo 'Oracle.DataAccess.Types.OracleDecimal' per digitare 'System.IConvertible'. "
Qualche idea? Grazie.
destro! Grazie, mi sento un po 'stupido ora. Ma grazie mille. – FelixMM
Beh, non è stupido. Convert.To ... dovrebbe essere la scelta migliore se disponibile. Poiché int.Parse() fondamentalmente analizza solo il valore stringa che dovrebbe essere un po 'più sovraccarico. Tuttavia, una cosa che potrebbe funzionare anche (non ci ho pensato in primo luogo) è: existsCount = (int) cmd.Parameters ["successCount"]. Valore se c'è una conversione esplicita fornita dalla lib Oracle. –
Ouch, no TryParse? –