Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVeerapuram Varadhan <vvaradhan@gmail.com>2011-02-14 18:40:43 +0300
committerVeerapuram Varadhan <vvaradhan@gmail.com>2011-02-14 18:48:04 +0300
commit881d960b2943baf4cfd1ba811ca08941a8104c81 (patch)
tree90cbf24766eb1ba1bf9460484f64c42fbcd9c9b1
parent6c161687ead1a7bc8f1115e4487dc2c231ac70b7 (diff)
backport of r1012ab0b
Fixes 667236 - Handle numeric types appropriately
-rw-r--r--mcs/class/System.Data.OracleClient/System.Data.OracleClient/ChangeLog6
-rw-r--r--mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs23
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 <vvaradhan@novell.com>
+
+ ** 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 <vvaradhan@novell.com>
** 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);