Ich habe eine gespeicherte Prozedur-Aufruf, der so geht:konvertieren OracleParameter.Value zu 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);
}
Aber auf dieser Linie:
existsCount = Convert.ToInt32(cmd.Parameters["successCount"].Value);
Es die Ausnahme „Kann nicht wirft Objekt vom Typ werfen 'Oracle.DataAccess.Types.OracleDecimal' um 'System.IConvertible' einzugeben. "
Irgendwelche Gedanken? Vielen Dank.
Rechts zu verwenden! Danke, ich fühle mich irgendwie blöd. Aber vielen Dank. – FelixMM
Nun, das ist nicht dumm. Convert.To ... sollte die bessere Wahl sein, wenn sie verfügbar ist. Da int.Parse() im Grunde nur den String-Wert analysiert, der etwas mehr Overhead sein sollte. Eine Sache, die auch funktionieren könnte (habe nicht darüber nachgedacht) ist: existsCount = (int) cmd.Parameters ["successCount"]. Wert wenn eine explizite Konvertierung von der Oracle-Bibliothek zur Verfügung gestellt wird. –
Autsch, kein TryParse? –