Конвертировать OracleParameter.Value в Int32 - PullRequest
25 голосов
/ 12 июня 2010

У меня есть вызов хранимой процедуры, который выглядит следующим образом:

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);

Выдает исключение "Невозможно привести объект типа" Oracle.DataAccess.Types.OracleDecimal 'для ввода' System.IConvertible '. "

Есть мысли?Спасибо.

Ответы [ 4 ]

42 голосов
/ 25 июля 2011

Вы также можете попробовать:

Oracle.DataAccess.Types.OracleDecimal d = (Oracle.DataAccess.Types.OracleDecimal)cmd.Parameters["successCount"].Value;

if( d.IsNull )
    existsCount = 0;
else
    existsCount = d.ToInt32( );
27 голосов
/ 12 июня 2010

А как же

existsCount = int.Parse(cmd.Parameters["successCount"].Value.ToString());
3 голосов
/ 15 ноября 2014

Более эффективно использовать

Convert.ToInt32((decimal)(OracleDecimal)(cmd.Parameters["successCount"].Value))
0 голосов
/ 01 июля 2014

Я предлагаю вам конвертировать в String, а после этого конвертировать из String в Integer.

Dim tmpIdSesiónCalificación As String = 
    parametroIdSesiónCalificación.Value.ToString
_idSesiónCalificación = Convert.ToInt32(tmpIdSesiónCalificación)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...