Tôi có một cuộc gọi thủ tục lưu trữ mà đi như thế này:Chuyển đổi 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);
}
Nhưng trên dòng này:
existsCount = Convert.ToInt32(cmd.Parameters["successCount"].Value);
Nó ném ngoại lệ "Unable to cast đối tượng của loại 'Oracle.DataAccess.Types.OracleDecimal' để nhập 'System.IConvertible'. "
Mọi suy nghĩ? Cảm ơn.
Đúng vậy! Cảm ơn, bây giờ tôi cảm thấy ngớ ngẩn. Nhưng cảm ơn rất nhiều. – FelixMM
Điều đó không ngu ngốc. Convert.To ... nên là choise tốt hơn nếu có. Vì int.Parse() về cơ bản chỉ phân tích cú pháp giá trị chuỗi nên ở trên một chút. Tuy nhiên, một điều có thể làm việc quá (không nghĩ về nó ngay từ đầu) là: existCount = (int) cmd.Parameters ["successCount"] .Giá trị nếu có chuyển đổi rõ ràng do thư viện Oracle cung cấp. –
Ouch, không TryParse? –