2009-06-04 Veerapuram Varadhan <vvaradhan@novell.com>
[mono.git] / mcs / class / System.Data.OracleClient / System.Data.OracleClient / OracleParameter.cs
index 3e59c46a9d5a2f100d092af644c838421e430edf..6f7b205b9712d0fe6643552f9b6717e7a81e95e4 100644 (file)
@@ -123,13 +123,17 @@ namespace System.Data.OracleClient
                {
                        this.name = name;
                        this.value = value;
+
+                       srcColumn = string.Empty;
+                       SourceVersion = DataRowVersion.Current;
+                       InferOracleType (value);                        
+#if NET_2_0
+                       // Find the OciType before inferring for the size
                        if (value != null && value != DBNull.Value) {
                                this.sizeSet = true;
                                this.size = InferSize ();
                        }
-                       srcColumn = string.Empty;
-                       SourceVersion = DataRowVersion.Current;
-                       InferOracleType (value);                        
+#endif
                }
 
                public OracleParameter (string name, OracleType oracleType)
@@ -155,10 +159,11 @@ namespace System.Data.OracleClient
                                throw new ArgumentException("Size must be not be negative.");
                        
                        this.value = value;
-                       if (value != null && value != DBNull.Value) {
-                               this.size = size;
+                       this.size = size;
+                       // set sizeSet to true iff value is not-null or non-zero size value
+                       if (value != null && value != DBNull.Value && size > 0)
                                this.sizeSet = true;
-                       }
+
                        SourceColumnNullMapping = sourceColumnNullMapping;
                        OracleType = oracleType;
                        Direction = direction;
@@ -174,10 +179,12 @@ namespace System.Data.OracleClient
                                throw new ArgumentException("Size must be not be negative.");
                        
                        this.value = value;
-                       if (value != null && value != DBNull.Value) {
-                               this.size = size;
+                       this.size = size;
+                       
+                       // set sizeSet to true iff value is not-null or non-zero size value
+                       if (value != null && value != DBNull.Value && size > 0)
                                this.sizeSet = true;
-                       }
+
                        this.isNullable = isNullable;
                        this.precision = precision;
                        this.scale = scale;
@@ -365,10 +372,12 @@ namespace System.Data.OracleClient
                                this.value = value;
                                if (!oracleTypeSet)
                                        InferOracleType (value);
+#if NET_2_0
                                if (value != null && value != DBNull.Value) {
                                        this.size = InferSize ();
                                        this.sizeSet = true;
                                }
+#endif
                        }
                }