2010-06-21 Marek Habersack <mhabersack@novell.com>
[mcs.git] / class / System.Data.OracleClient / System.Data.OracleClient.Oci / OciParameterDescriptor.cs
blob8f6f6dc88c733ab52b1e3bed026c6d9494644ae2
1 //
2 // OciParameterDescriptor.cs
3 //
4 // Part of managed C#/.NET library System.Data.OracleClient.dll
5 //
6 // Part of the Mono class libraries at
7 // mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci
8 //
9 // Assembly: System.Data.OracleClient.dll
10 // Namespace: System.Data.OracleClient.Oci
12 // Author:
13 // Tim Coleman <tim@timcoleman.com>
14 // Daniel Morgan <danielmorgan@verizon.net>
16 // Copyright (C) Tim Coleman, 2003
17 // Copyright (C) Daniel Morgan, 2005
20 using System;
21 using System.Data.OracleClient;
22 using System.Runtime.InteropServices;
24 namespace System.Data.OracleClient.Oci {
25 internal sealed class OciParameterDescriptor : OciDescriptorHandle
27 #region Fields
29 OciErrorHandle errorHandle;
30 //OciServiceHandle service;
31 //OciDataType type;
33 #endregion // Fields
35 #region Constructors
37 public OciParameterDescriptor (OciHandle parent, IntPtr handle)
38 : base (OciHandleType.Parameter, parent, handle)
42 #endregion // Constructors
44 #region Properties
46 public OciErrorHandle ErrorHandle {
47 get { return errorHandle; }
48 set { errorHandle = value; }
51 #endregion // Properties
53 #region Methods
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)
72 switch (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;
95 case OciDataType.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:
112 // return ???
113 //case OciDataType.Ref:
114 // return ???
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;
131 default:
132 throw new NotImplementedException ();
136 public Type GetFieldType (string sDataTypeName)
138 switch (sDataTypeName) {
139 case "VarChar2":
140 return typeof (System.String);
141 case "Number":
142 return typeof (System.Decimal);
143 case "Integer":
144 return typeof (System.Int32);
145 case "Float":
146 return typeof (System.Decimal);
147 case "String":
148 return typeof (System.String);
149 case "VarNum":
150 return typeof (System.Decimal);
151 case "Long":
152 return typeof (System.String);
153 case "VarChar":
154 return typeof (System.String);
155 case "RowId":
156 return typeof (System.String);
157 case "Date":
158 return typeof (System.DateTime);
159 case "VarRaw":
160 return typeof (byte[]);
161 case "Raw":
162 return typeof (byte[]);
163 case "LongRaw":
164 return typeof (byte[]);
165 case "UnsignedInt":
166 return typeof (System.UInt32);
167 case "LongVarChar":
168 return typeof (System.String);
169 case "LongVarRaw":
170 return typeof (byte[]);
171 case "Char":
172 return typeof (System.String);
173 case "CharZ":
174 return typeof (System.String);
175 case "RowIdDescriptor":
176 return typeof (System.String);
177 case "NamedDataType":
178 return typeof (System.String);
179 case "Ref":
180 return typeof (System.String);
181 case "Clob":
182 return typeof (System.String);
183 case "Blob":
184 return typeof (byte[]);
185 case "BFile":
186 return typeof (byte[]);
187 case "OciString":
188 return typeof (System.String);
189 case "OciDate":
190 return typeof (System.DateTime);
191 case "TimeStamp":
192 return typeof (System.DateTime);
193 case "IntervalDayToSecond":
194 return typeof (System.TimeSpan);
195 case "IntervalYearToMonth":
196 return typeof (System.Int32);
197 default:
198 // FIXME: are these types correct?
199 return typeof(System.String);
203 public string GetDataTypeName ()
205 switch(GetDataType())
207 case OciDataType.VarChar2:
208 return "VarChar2";
209 case OciDataType.Number:
210 return "Number";
211 case OciDataType.Integer:
212 return "Integer";
213 case OciDataType.Float:
214 return "Float";
215 case OciDataType.String:
216 return "String";
217 case OciDataType.VarNum:
218 return "VarNum";
219 case OciDataType.Long:
220 return "Long";
221 case OciDataType.VarChar:
222 return "VarChar";
223 case OciDataType.RowId:
224 return "RowId";
225 case OciDataType.Date:
226 return "Date";
227 case OciDataType.VarRaw:
228 return "VarRaw";
229 case OciDataType.Raw:
230 return "Raw";
231 case OciDataType.LongRaw:
232 return "LongRaw";
233 case OciDataType.UnsignedInt:
234 return "UnsignedInt";
235 case OciDataType.LongVarChar:
236 return "LongVarChar";
237 case OciDataType.LongVarRaw:
238 return "LongVarRaw";
239 case OciDataType.Char:
240 return "Char";
241 case OciDataType.CharZ:
242 return "CharZ";
243 case OciDataType.RowIdDescriptor:
244 return "RowIdDescriptor";
245 case OciDataType.NamedDataType:
246 return "NamedDataType";
247 case OciDataType.Ref:
248 return "Ref";
249 case OciDataType.Clob:
250 return "Clob";
251 case OciDataType.Blob:
252 return "Blob";
253 case OciDataType.BFile:
254 return "BFile";
255 case OciDataType.OciString:
256 return "OciString";
257 case OciDataType.OciDate:
258 return "OciDate";
259 case OciDataType.TimeStamp:
260 return "TimeStamp";
261 case OciDataType.IntervalDayToSecond:
262 return "IntervalDayToSecond";
263 case OciDataType.IntervalYearToMonth:
264 return "IntervalYearToMonth";
265 default:
266 return "Unknown";
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