From 881d960b2943baf4cfd1ba811ca08941a8104c81 Mon Sep 17 00:00:00 2001 From: Veerapuram Varadhan Date: Mon, 14 Feb 2011 21:10:43 +0530 Subject: backport of r1012ab0b Fixes 667236 - Handle numeric types appropriately --- .../System.Data.OracleClient/ChangeLog | 6 ++++++ .../System.Data.OracleClient/OracleParameter.cs | 23 +++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/mcs/class/System.Data.OracleClient/System.Data.OracleClient/ChangeLog b/mcs/class/System.Data.OracleClient/System.Data.OracleClient/ChangeLog index eea0a29e9d3..4d1b27677ea 100644 --- a/mcs/class/System.Data.OracleClient/System.Data.OracleClient/ChangeLog +++ b/mcs/class/System.Data.OracleClient/System.Data.OracleClient/ChangeLog @@ -1,3 +1,9 @@ +2010-01-30 Veerapuram Varadhan + + ** Fixes #667236 - Based on patch by Kalyanov.Dmitry@gmail.com + * OracleParameter.cs (GetOutValue): Handle OciDataType.Integer + appropriately using the underlying dbType. + 2009-10-29 Veerapuram Varadhan ** Fixes #322695 diff --git a/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs b/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs index 9cfcd96097c..8979761a29b 100644 --- a/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs +++ b/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs @@ -1,4 +1,4 @@ -// +// // OracleParameter.cs // // Part of the Mono class libraries at @@ -1305,8 +1305,25 @@ namespace System.Data.OracleClient OciCalls.OCICharSetToUnicode (env, ret, bytes, out rsize); // if not empty, parse string as a decimal using session format - if (ret.Length > 0) - value = Decimal.Parse (ret.ToString (), cmd.Connection.SessionFormatProvider); + if (ret.Length > 0) { + switch (dbType) { + case DbType.UInt16: + value = UInt16.Parse (ret.ToString (), cmd.Connection.SessionFormatProvider); + break; + case DbType.UInt32: + value = UInt32.Parse (ret.ToString (), cmd.Connection.SessionFormatProvider); + break; + case DbType.Int16: + value = Int16.Parse (ret.ToString (), cmd.Connection.SessionFormatProvider); + break; + case DbType.Int32: + value = Int32.Parse (ret.ToString (), cmd.Connection.SessionFormatProvider); + break; + default: + value = Decimal.Parse (ret.ToString (), cmd.Connection.SessionFormatProvider); + break; + } + } break; case OciDataType.TimeStamp: value = dateTimeDesc.GetDateTime (connection.Environment, dateTimeDesc.ErrorHandle); -- cgit v1.2.3