2 // OciParameterDescriptor.cs
4 // Part of managed C#/.NET library System.Data.OracleClient.dll
6 // Part of the Mono class libraries at
7 // mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci
9 // Assembly: System.Data.OracleClient.dll
10 // Namespace: System.Data.OracleClient.Oci
13 // Tim Coleman <tim@timcoleman.com>
14 // Daniel Morgan <danielmorgan@verizon.net>
16 // Copyright (C) Tim Coleman, 2003
17 // Copyright (C) Daniel Morgan, 2005
21 using System.Data.OracleClient;
22 using System.Runtime.InteropServices;
24 namespace System.Data.OracleClient.Oci {
25 internal sealed class OciParameterDescriptor : OciDescriptorHandle
29 OciErrorHandle errorHandle;
30 //OciServiceHandle service;
37 public OciParameterDescriptor (OciHandle parent, IntPtr handle)
38 : base (OciHandleType.Parameter, parent, handle)
42 #endregion // Constructors
46 public OciErrorHandle ErrorHandle {
47 get { return errorHandle; }
48 set { errorHandle = value; }
51 #endregion // Properties
55 public string GetName ()
57 return GetAttributeString (OciAttributeType.Name, ErrorHandle);
60 public int GetDataSize ()
62 return (int) GetAttributeUInt16 (OciAttributeType.DataSize, ErrorHandle);
65 public OciDataType GetDataType ()
67 return (OciDataType) GetAttributeUInt16 (OciAttributeType.DataType, ErrorHandle);
70 public static OracleType OciDataTypeToOracleType (OciDataType ociType)
73 case OciDataType.VarChar2:
74 return OracleType.VarChar;
75 case OciDataType.Number:
76 return OracleType.Number;
77 case OciDataType.Integer:
78 return OracleType.UInt32;
79 case OciDataType.Float:
80 return OracleType.Float;
81 case OciDataType.String:
82 return OracleType.VarChar;
83 case OciDataType.VarNum:
84 return OracleType.Number;
85 case OciDataType.Long:
86 return OracleType.LongVarChar;
87 case OciDataType.VarChar:
88 return OracleType.VarChar;
89 case OciDataType.RowId:
90 return OracleType.RowId;
91 case OciDataType.Date:
92 return OracleType.DateTime;
93 case OciDataType.VarRaw:
94 return OracleType.Raw;
96 return OracleType.Raw;
97 case OciDataType.LongRaw:
98 return OracleType.Raw;
99 case OciDataType.UnsignedInt:
100 return OracleType.UInt32;
101 case OciDataType.LongVarChar:
102 return OracleType.LongVarChar;
103 case OciDataType.LongVarRaw:
104 return OracleType.Raw;
105 case OciDataType.Char:
106 return OracleType.Char;
107 case OciDataType.CharZ:
108 return OracleType.Char;
109 case OciDataType.RowIdDescriptor:
110 return OracleType.RowId;
111 //case OciDataType.NamedDataType:
113 //case OciDataType.Ref:
115 case OciDataType.Clob:
116 return OracleType.Clob;
117 case OciDataType.Blob:
118 return OracleType.Blob;
119 case OciDataType.BFile:
120 return OracleType.BFile;
121 case OciDataType.OciString:
122 return OracleType.VarChar;
123 case OciDataType.OciDate:
124 return OracleType.DateTime;
125 case OciDataType.TimeStamp:
126 return OracleType.Timestamp;
127 case OciDataType.IntervalDayToSecond:
128 return OracleType.IntervalDayToSecond;
129 case OciDataType.IntervalYearToMonth:
130 return OracleType.IntervalYearToMonth;
132 throw new NotImplementedException ();
136 public Type GetFieldType (string sDataTypeName)
138 switch (sDataTypeName) {
140 return typeof (System.String);
142 return typeof (System.Decimal);
144 return typeof (System.Int32);
146 return typeof (System.Decimal);
148 return typeof (System.String);
150 return typeof (System.Decimal);
152 return typeof (System.String);
154 return typeof (System.String);
156 return typeof (System.String);
158 return typeof (System.DateTime);
160 return typeof (byte[]);
162 return typeof (byte[]);
164 return typeof (byte[]);
166 return typeof (System.UInt32);
168 return typeof (System.String);
170 return typeof (byte[]);
172 return typeof (System.String);
174 return typeof (System.String);
175 case "RowIdDescriptor":
176 return typeof (System.String);
177 case "NamedDataType":
178 return typeof (System.String);
180 return typeof (System.String);
182 return typeof (System.String);
184 return typeof (byte[]);
186 return typeof (byte[]);
188 return typeof (System.String);
190 return typeof (System.DateTime);
192 return typeof (System.DateTime);
193 case "IntervalDayToSecond":
194 return typeof (System.TimeSpan);
195 case "IntervalYearToMonth":
196 return typeof (System.Int32);
198 // FIXME: are these types correct?
199 return typeof(System.String);
203 public string GetDataTypeName ()
205 switch(GetDataType())
207 case OciDataType.VarChar2:
209 case OciDataType.Number:
211 case OciDataType.Integer:
213 case OciDataType.Float:
215 case OciDataType.String:
217 case OciDataType.VarNum:
219 case OciDataType.Long:
221 case OciDataType.VarChar:
223 case OciDataType.RowId:
225 case OciDataType.Date:
227 case OciDataType.VarRaw:
229 case OciDataType.Raw:
231 case OciDataType.LongRaw:
233 case OciDataType.UnsignedInt:
234 return "UnsignedInt";
235 case OciDataType.LongVarChar:
236 return "LongVarChar";
237 case OciDataType.LongVarRaw:
239 case OciDataType.Char:
241 case OciDataType.CharZ:
243 case OciDataType.RowIdDescriptor:
244 return "RowIdDescriptor";
245 case OciDataType.NamedDataType:
246 return "NamedDataType";
247 case OciDataType.Ref:
249 case OciDataType.Clob:
251 case OciDataType.Blob:
253 case OciDataType.BFile:
255 case OciDataType.OciString:
257 case OciDataType.OciDate:
259 case OciDataType.TimeStamp:
261 case OciDataType.IntervalDayToSecond:
262 return "IntervalDayToSecond";
263 case OciDataType.IntervalYearToMonth:
264 return "IntervalYearToMonth";
270 public short GetPrecision ()
272 return (short) GetAttributeByte (OciAttributeType.Precision, ErrorHandle);
275 public short GetScale ()
277 return (short) GetAttributeSByte (OciAttributeType.Scale, ErrorHandle);
280 public bool GetIsNull ()
282 return GetAttributeBool (OciAttributeType.IsNull, ErrorHandle);
285 #endregion // Methods