Browse Source

Applied patch from: David Pickens <[email protected]>

svn path=/trunk/mcs/; revision=17369
Miguel de Icaza 22 years ago
parent
commit
e69d252ebe

+ 61 - 0
mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciParameterDescriptor.cs

@@ -65,6 +65,67 @@ namespace System.Data.OracleClient.Oci {
 			return (OciDataType) GetAttributeInt32 (OciAttributeType.DataType, ErrorHandle);
 		}
 
+		public string GetDataTypeName ()
+		{
+			switch(GetDataType())
+			{
+				case OciDataType.VarChar2:
+					return "VarChar2";
+				case OciDataType.Number:
+					return "Number";
+				case OciDataType.Integer:
+					return "Integer";
+				case OciDataType.Float:
+					return "Float";
+				case OciDataType.String:
+					return "String";
+				case OciDataType.VarNum:
+					return "VarNum";
+				case OciDataType.Long:
+					return "Long";
+				case OciDataType.VarChar:
+					return "VarChar";
+				case OciDataType.RowId:
+					return "RowId";
+				case OciDataType.Date:
+					return "Date";
+				case OciDataType.VarRaw:
+					return "VarRaw";
+				case OciDataType.Raw:
+					return "Raw";
+				case OciDataType.LongRaw:
+					return "LongRaw";
+				case OciDataType.UnsignedInt:
+					return "UnsignedInt";
+				case OciDataType.LongVarChar:
+					return "LongVarChar";
+				case OciDataType.LongVarRaw:
+					return "LongVarRaw";
+				case OciDataType.Char:
+					return "Char";
+				case OciDataType.CharZ:
+					return "CharZ";
+				case OciDataType.RowIdDescriptor:
+					return "RowIdDescriptor";
+				case OciDataType.NamedDataType:
+					return "NamedDataType";
+				case OciDataType.Ref:
+					return "Ref";
+				case OciDataType.Clob:
+					return "Clob";
+				case OciDataType.Blob:
+					return "Blob";
+				case OciDataType.BFile:
+					return "BFile";
+				case OciDataType.OciString:
+					return "OciString";
+				case OciDataType.OciDate:
+					return "OciDate";
+				default:
+					return "Unknown";
+			}
+		}
+
 		public short GetPrecision ()
 		{
 			return (short) GetAttributeByte (OciAttributeType.Precision, ErrorHandle);

+ 5 - 1
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleDataReader.cs

@@ -127,6 +127,7 @@ namespace System.Data.OracleClient {
 			schemaTable.Columns.Add ("AllowDBNull", booleanType);
 			schemaTable.Columns.Add ("IsUnique", booleanType);
 			schemaTable.Columns.Add ("IsKey", booleanType);
+			schemaTable.Columns.Add ("IsReadOnly", booleanType);
 			schemaTable.Columns.Add ("BaseSchemaTable", stringType);
 			schemaTable.Columns.Add ("BaseCatalogName", stringType);
 			schemaTable.Columns.Add ("BaseTableName", stringType);
@@ -321,7 +322,7 @@ namespace System.Data.OracleClient {
 		{
 			if (schemaTable.Rows != null && schemaTable.Rows.Count > 0)
 				return schemaTable;
-			
+
 			dataTypeNames = new ArrayList ();
 
 			for (int i = 0; i < statement.ColumnCount; i += 1) {
@@ -329,6 +330,8 @@ namespace System.Data.OracleClient {
 
 				OciParameterDescriptor parameter = statement.GetParameter (i);
 
+				dataTypeNames.Add(parameter.GetDataTypeName());
+
 				row ["ColumnName"]		= parameter.GetName ();
 				row ["ColumnOrdinal"]		= i + 1;
 				row ["ColumnSize"]		= parameter.GetDataSize ();
@@ -339,6 +342,7 @@ namespace System.Data.OracleClient {
 				row ["DataType"]		= typeof(string);
 				row ["AllowDBNull"]		= parameter.GetIsNull ();
 				row ["BaseColumnName"]		= parameter.GetName ();
+				row ["IsReadOnly"] 		= true;
 
 				schemaTable.Rows.Add (row);
 			}