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