OracleConvert.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. //
  2. // System.Data.Oracle.OracleConvert
  3. //
  4. // Authors:
  5. // Konstantin Triger <[email protected]>
  6. //
  7. // (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
  8. //
  9. //
  10. // Permission is hereby granted, free of charge, to any person obtaining
  11. // a copy of this software and associated documentation files (the
  12. // "Software"), to deal in the Software without restriction, including
  13. // without limitation the rights to use, copy, modify, merge, publish,
  14. // distribute, sublicense, and/or sell copies of the Software, and to
  15. // permit persons to whom the Software is furnished to do so, subject to
  16. // the following conditions:
  17. //
  18. // The above copyright notice and this permission notice shall be
  19. // included in all copies or substantial portions of the Software.
  20. //
  21. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  22. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  23. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  24. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  25. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  26. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  27. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  28. //
  29. using System;
  30. using System.Collections;
  31. using System.Data.Common;
  32. using System.Data.ProviderBase;
  33. using java.sql;
  34. namespace System.Data.OracleClient {
  35. #region oracle.sql.Types constants
  36. internal enum JavaSqlTypes {
  37. ARRAY = 2003 ,
  38. BIGINT = -5,
  39. BINARY = -2 ,
  40. BIT = -7 ,
  41. BLOB = 2004,
  42. BOOLEAN = 16,
  43. CHAR = 1,
  44. CLOB = 2005,
  45. DATALINK = 70,
  46. DATE = 91,
  47. DECIMAL = 3,
  48. DISTINCT = 2001,
  49. DOUBLE = 8,
  50. FLOAT = 6,
  51. INTEGER = 4,
  52. JAVA_OBJECT = 2000,
  53. LONGVARBINARY = -4,
  54. LONGVARCHAR = -1,
  55. NULL = 0,
  56. NUMERIC = 2 ,
  57. OTHER = 1111 ,
  58. REAL = 7 ,
  59. REF = 2006 ,
  60. SMALLINT = 5,
  61. STRUCT = 2002,
  62. TIME = 92,
  63. TIMESTAMP = 93,
  64. TINYINT = -6,
  65. VARBINARY = -3,
  66. VARCHAR = 12,
  67. //ORACLE types, see oracle.jdbc.OracleTypes
  68. BINARY_FLOAT = 100,
  69. BINARY_DOUBLE = 101,
  70. ROWID = -8,
  71. CURSOR = -10,
  72. TIMESTAMPNS = -100,
  73. TIMESTAMPTZ = -101,
  74. TIMESTAMPLTZ = -102,
  75. INTERVALYM = -103,
  76. INTERVALDS = -104,
  77. }
  78. #endregion
  79. sealed class OracleConvert : DbConvert {
  80. #region .Net types constants
  81. internal static readonly Type TypeOfBoolean = typeof(Boolean);
  82. internal static readonly Type TypeOfSByte = typeof(SByte);
  83. internal static readonly Type TypeOfChar = typeof(Char);
  84. internal static readonly Type TypeOfInt16 = typeof(Int16);
  85. internal static readonly Type TypeOfInt32 = typeof(Int32);
  86. internal static readonly Type TypeOfInt64 = typeof(Int64);
  87. internal static readonly Type TypeOfByte = typeof(Byte);
  88. internal static readonly Type TypeOfUInt16 = typeof(UInt16);
  89. internal static readonly Type TypeOfUInt32 = typeof(UInt32);
  90. internal static readonly Type TypeOfUInt64 = typeof(UInt64);
  91. internal static readonly Type TypeOfDouble = typeof(Double);
  92. internal static readonly Type TypeOfSingle = typeof(Single);
  93. internal static readonly Type TypeOfDecimal = typeof(Decimal);
  94. internal static readonly Type TypeOfString = typeof(String);
  95. internal static readonly Type TypeOfDateTime = typeof(DateTime);
  96. internal static readonly Type TypeOfObject = typeof(object);
  97. internal static readonly Type TypeOfGuid = typeof(Guid);
  98. internal static readonly Type TypeOfType = typeof(Type);
  99. // additional types
  100. internal static readonly Type TypeOfByteArray = typeof(Byte[]);
  101. internal static readonly Type TypeOfCharArray = typeof(Char[]);
  102. internal static readonly Type TypeOfFloat = typeof (float);
  103. internal static readonly Type TypeOfTimespan = typeof (TimeSpan);
  104. static readonly Type TypeOfIDataReader = typeof(IDataReader);
  105. #endregion
  106. #region Methods
  107. internal static String JdbcTypeNameToDbTypeName(string jdbcTypeName) {
  108. return jdbcTypeName.Trim();;
  109. }
  110. internal static OracleType JdbcTypeToOracleType(int jdbcType) {
  111. switch ((JavaSqlTypes)jdbcType) {
  112. case JavaSqlTypes.ARRAY: return OracleType.Blob;
  113. case JavaSqlTypes.BIGINT: return OracleType.Number;
  114. case JavaSqlTypes.BINARY: return OracleType.Blob;
  115. case JavaSqlTypes.BIT: return OracleType.Byte;
  116. case JavaSqlTypes.BLOB: return OracleType.Blob;
  117. case JavaSqlTypes.BOOLEAN: return OracleType.Byte;
  118. case JavaSqlTypes.CHAR: return OracleType.Char;
  119. case JavaSqlTypes.CLOB: return OracleType.Clob;
  120. // case JavaSqlTypes.DATALINK: return OracleType.IUnknown;
  121. case JavaSqlTypes.DATE: return OracleType.DateTime;
  122. case JavaSqlTypes.DECIMAL: return OracleType.Number;
  123. // case JavaSqlTypes.DISTINCT: return OracleType.IUnknown;
  124. case JavaSqlTypes.DOUBLE: return OracleType.Double;
  125. case JavaSqlTypes.FLOAT: return OracleType.Float;
  126. case JavaSqlTypes.INTEGER: return OracleType.Int32;
  127. // case JavaSqlTypes.JAVA_OBJECT: return OracleType.IUnknown;
  128. case JavaSqlTypes.LONGVARBINARY: return OracleType.LongRaw;
  129. case JavaSqlTypes.LONGVARCHAR: return OracleType.LongVarChar;
  130. // case JavaSqlTypes.NULL: return OracleType.Empty;
  131. case JavaSqlTypes.NUMERIC: return OracleType.Number;
  132. // case JavaSqlTypes.OTHER: return OracleType.IUnknown;
  133. // case JavaSqlTypes.REAL: return OracleType.Single;
  134. // case JavaSqlTypes.REF: return OracleType.IUnknown;
  135. case JavaSqlTypes.SMALLINT: return OracleType.Int16;
  136. // case JavaSqlTypes.STRUCT: return OracleType.IUnknown;
  137. case JavaSqlTypes.TIME: return OracleType.TimestampLocal;
  138. case JavaSqlTypes.TIMESTAMP: return OracleType.Timestamp;
  139. case JavaSqlTypes.TINYINT: return OracleType.Byte;
  140. case JavaSqlTypes.VARBINARY: return OracleType.LongVarChar;
  141. default:
  142. case JavaSqlTypes.VARCHAR: return OracleType.VarChar;
  143. case JavaSqlTypes.BINARY_FLOAT: return OracleType.Float;
  144. case JavaSqlTypes.BINARY_DOUBLE: return OracleType.Double;
  145. case JavaSqlTypes.ROWID: return OracleType.RowId;
  146. case JavaSqlTypes.CURSOR: return OracleType.Cursor;
  147. case JavaSqlTypes.TIMESTAMPNS: return OracleType.Timestamp;
  148. case JavaSqlTypes.TIMESTAMPTZ: return OracleType.TimestampWithTZ;
  149. case JavaSqlTypes.TIMESTAMPLTZ: return OracleType.TimestampLocal;
  150. case JavaSqlTypes.INTERVALYM: return OracleType.IntervalYearToMonth;
  151. case JavaSqlTypes.INTERVALDS: return OracleType.IntervalDayToSecond;
  152. }
  153. }
  154. internal static OracleType ValueTypeToOracleType(Type type) {
  155. switch (Type.GetTypeCode(type)) {
  156. case TypeCode.Boolean: return OracleType.Byte;
  157. case TypeCode.Byte: return OracleType.Byte;
  158. case TypeCode.Char: return OracleType.Char;
  159. case TypeCode.DateTime: return OracleType.DateTime;
  160. // case TypeCode.DBNull: return OracleType.Empty;
  161. case TypeCode.Decimal: return OracleType.Number;
  162. case TypeCode.Double: return OracleType.Double;
  163. // case TypeCode.Empty: return OracleType.Empty;
  164. case TypeCode.Int16: return OracleType.Int16;
  165. case TypeCode.Int32: return OracleType.Int32;
  166. case TypeCode.Int64: return OracleType.Number;
  167. default:
  168. case TypeCode.Object: {
  169. if (type.Equals(TypeOfByteArray)) return OracleType.Blob;
  170. if (type.Equals(TypeOfTimespan)) return OracleType.Timestamp;
  171. if (type.IsSubclassOf(TypeOfIDataReader)) return OracleType.Cursor;
  172. // if (type.Equals(DbTypes.TypeOfGuid)) return OracleType.Guid;
  173. //
  174. if (type.IsEnum)
  175. return ValueTypeToOracleType (Enum.GetUnderlyingType (type));
  176. //
  177. return OracleType.VarChar;
  178. }
  179. case TypeCode.SByte: return OracleType.SByte;
  180. case TypeCode.Single: return OracleType.Float;
  181. case TypeCode.String: return OracleType.VarChar;
  182. case TypeCode.UInt16: return OracleType.UInt16;
  183. case TypeCode.UInt32: return OracleType.UInt32;
  184. case TypeCode.UInt64: return OracleType.Number;
  185. }
  186. }
  187. internal static Type OracleTypeToValueType(OracleType oleDbType) {
  188. switch (oleDbType) {
  189. // case OracleType.BigInt : return DbTypes.TypeOfInt64;// typeof(long);
  190. // case OracleType.Binary : return DbTypes.TypeOfByteArray;
  191. // case OracleType.Boolean : return DbTypes.TypeOfBoolean;
  192. // case OracleType.BSTR : return DbTypes.TypeOfString;
  193. case OracleType.BFile : return TypeOfByteArray;
  194. case OracleType.Blob : return TypeOfByteArray;
  195. case OracleType.Byte : return TypeOfByte;
  196. case OracleType.Char : return TypeOfString;
  197. case OracleType.Clob : return TypeOfCharArray;
  198. case OracleType.Cursor : return TypeOfIDataReader;
  199. case OracleType.DateTime : return TypeOfDateTime;
  200. // case OracleType.Currency : return TypeOfDecimal;
  201. // case OracleType.Date : return TypeOfDateTime;
  202. // case OracleType.DBDate : return TypeOfDateTime;
  203. // case OracleType.DBTime : return TypeOfTimespan;
  204. // case OracleType.DBTimeStamp : return TypeOfDateTime;
  205. // case OracleType.Decimal : return TypeOfDecimal;
  206. case OracleType.Double : return TypeOfDouble;
  207. case OracleType.Float : return TypeOfFloat;
  208. case OracleType.Int16 : return TypeOfInt16;
  209. case OracleType.Int32 : return TypeOfInt32;
  210. case OracleType.IntervalDayToSecond : return TypeOfTimespan;
  211. case OracleType.IntervalYearToMonth : return TypeOfInt32;
  212. case OracleType.LongRaw : return TypeOfByteArray;
  213. // case OracleType.Empty : return null; //typeof(DBNull);
  214. // case OracleType.Error : return typeof(Exception);
  215. // case OracleType.Filetime : return TypeOfDateTime;
  216. // case OracleType.Guid : return TypeOfGuid;
  217. // case OracleType.IDispatch : return TypeOfObject;
  218. // case OracleType.Integer : return TypeOfInt32;
  219. // case OracleType.IUnknown : return TypeOfObject;
  220. // case OracleType.LongVarBinary : return TypeOfByteArray;
  221. case OracleType.LongVarChar : return TypeOfString;
  222. case OracleType.NChar : return TypeOfString;
  223. case OracleType.NClob : return TypeOfString;
  224. case OracleType.Number : return TypeOfDecimal;
  225. case OracleType.NVarChar : return TypeOfString;
  226. case OracleType.Raw : return TypeOfByteArray;
  227. case OracleType.RowId : return TypeOfString;
  228. case OracleType.SByte : return TypeOfSByte;
  229. case OracleType.Timestamp : return TypeOfTimespan;
  230. case OracleType.TimestampLocal : return TypeOfTimespan;
  231. case OracleType.TimestampWithTZ : return TypeOfTimespan;
  232. case OracleType.UInt16 : return TypeOfUInt16;
  233. case OracleType.UInt32 : return TypeOfUInt32;
  234. case OracleType.VarChar : return TypeOfString;
  235. // case OracleType.LongVarWChar : return TypeOfString;
  236. // case OracleType.Numeric : return TypeOfDecimal;
  237. // case OracleType.PropVariant : return TypeOfObject;
  238. // case OracleType.Single : return TypeOfFloat;
  239. // case OracleType.SmallInt : return TypeOfInt16;
  240. // case OracleType.TinyInt : return TypeOfSByte;
  241. // case OracleType.UnsignedBigInt : return TypeOfUInt64;
  242. // case OracleType.UnsignedInt : return TypeOfUInt32;
  243. // case OracleType.UnsignedSmallInt : return TypeOfUInt16;
  244. // case OracleType.UnsignedTinyInt : return TypeOfByte;
  245. // case OracleType.VarBinary : return TypeOfByteArray;
  246. // case OracleType.VarChar : return TypeOfString;
  247. // case OracleType.Variant : return TypeOfObject;
  248. // case OracleType.VarNumeric : return TypeOfDecimal;
  249. // case OracleType.VarWChar : return TypeOfString;
  250. // case OracleType.WChar : return TypeOfString;
  251. default : return TypeOfObject;
  252. }
  253. }
  254. internal static OracleType DbTypeToOracleType(DbType dbType) {
  255. switch (dbType) {
  256. case DbType.AnsiString : return OracleType.VarChar;
  257. case DbType.Binary : return OracleType.Blob;
  258. case DbType.Byte : return OracleType.Byte;
  259. case DbType.Boolean : return OracleType.Byte;
  260. case DbType.Currency : return OracleType.Number;
  261. case DbType.Date : return OracleType.DateTime;
  262. case DbType.DateTime : return OracleType.DateTime;
  263. case DbType.Decimal : return OracleType.Number;
  264. case DbType.Double : return OracleType.Double;
  265. case DbType.Guid : return OracleType.Char;
  266. case DbType.Int16 : return OracleType.Int16;
  267. case DbType.Int32 : return OracleType.Int32;
  268. case DbType.Int64 : return OracleType.Number;
  269. case DbType.Object : return OracleType.Cursor;
  270. case DbType.SByte : return OracleType.SByte;
  271. case DbType.Single : return OracleType.Float;
  272. case DbType.String : return OracleType.VarChar;
  273. case DbType.Time : return OracleType.Timestamp;
  274. case DbType.UInt16 : return OracleType.UInt16;
  275. case DbType.UInt32 : return OracleType.UInt32;
  276. case DbType.UInt64 : return OracleType.Number;
  277. case DbType.VarNumeric : return OracleType.Number;
  278. case DbType.AnsiStringFixedLength : return OracleType.NChar;
  279. case DbType.StringFixedLength : return OracleType.Char;
  280. default : throw ExceptionHelper.InvalidDbType((int)dbType);
  281. }
  282. }
  283. internal static DbType OracleTypeToDbType(OracleType oleDbType) {
  284. switch (oleDbType) {
  285. case OracleType.BFile : return DbType.Binary;
  286. case OracleType.Blob : return DbType.Binary;
  287. case OracleType.Byte : return DbType.Byte;
  288. case OracleType.Char : return DbType.StringFixedLength;
  289. case OracleType.Clob : return DbType.String;
  290. case OracleType.Cursor : return DbType.Object;
  291. case OracleType.DateTime : return DbType.DateTime;
  292. case OracleType.Double : return DbType.Double;
  293. case OracleType.Float : return DbType.Single;
  294. case OracleType.Int16 : return DbType.Int16;
  295. case OracleType.Int32 : return DbType.Int32;
  296. case OracleType.IntervalDayToSecond : return DbType.Time;
  297. case OracleType.IntervalYearToMonth : return DbType.Int32;
  298. case OracleType.LongRaw : return DbType.Binary;
  299. case OracleType.LongVarChar : return DbType.String;
  300. case OracleType.NChar : return DbType.AnsiStringFixedLength;
  301. case OracleType.NClob : return DbType.AnsiString;
  302. case OracleType.Number : return DbType.VarNumeric;
  303. case OracleType.NVarChar : return DbType.AnsiString;
  304. case OracleType.Raw : return DbType.Binary;
  305. case OracleType.RowId : return DbType.AnsiStringFixedLength;
  306. case OracleType.SByte : return DbType.SByte;
  307. case OracleType.Timestamp : return DbType.Time;
  308. case OracleType.TimestampLocal : return DbType.Time;
  309. case OracleType.TimestampWithTZ : return DbType.Time;
  310. case OracleType.UInt16 : return DbType.UInt16;
  311. case OracleType.UInt32 : return DbType.UInt32;
  312. case OracleType.VarChar : return DbType.String;
  313. // case OracleType.Empty : return DbType.Object;
  314. // case OracleType.SmallInt : return DbType.Int16;
  315. // case OracleType.Integer : return DbType.Int32;
  316. // case OracleType.Single : return DbType.Single;
  317. // case OracleType.Double : return DbType.Double;
  318. // case OracleType.Currency : return DbType.Currency;
  319. // case OracleType.Date : return DbType.DateTime;
  320. // case OracleType.BSTR : return DbType.String;
  321. // case OracleType.IDispatch : return DbType.Object;
  322. // case OracleType.Error : return DbType.Object;
  323. // case OracleType.Boolean : return DbType.Boolean;
  324. // case OracleType.Variant : return DbType.Object;
  325. // case OracleType.IUnknown : return DbType.Object;
  326. // case OracleType.Decimal : return DbType.Decimal;
  327. // case OracleType.TinyInt : return DbType.SByte;
  328. // case OracleType.UnsignedTinyInt : return DbType.Byte;
  329. // case OracleType.UnsignedSmallInt : return DbType.UInt16;
  330. // case OracleType.UnsignedInt : return DbType.UInt32;
  331. // case OracleType.BigInt : return DbType.Int64;
  332. // case OracleType.UnsignedBigInt : return DbType.UInt64;
  333. // case OracleType.Filetime : return DbType.DateTime;
  334. // case OracleType.Guid : return DbType.Guid;
  335. // case OracleType.Binary : return DbType.Binary;
  336. // case OracleType.Char : return DbType.AnsiStringFixedLength;
  337. // case OracleType.WChar : return DbType.StringFixedLength;
  338. // case OracleType.Numeric : return DbType.Decimal;
  339. // case OracleType.DBDate : return DbType.Date;
  340. // case OracleType.DBTime : return DbType.Time;
  341. // case OracleType.DBTimeStamp : return DbType.DateTime;
  342. // case OracleType.PropVariant : return DbType.Object;
  343. // case OracleType.VarNumeric : return DbType.VarNumeric;
  344. // case OracleType.VarChar : return DbType.AnsiString;
  345. // case OracleType.LongVarChar : return DbType.AnsiString;
  346. // case OracleType.VarWChar : return DbType.String;
  347. // case OracleType.LongVarWChar : return DbType.String;
  348. // case OracleType.VarBinary : return DbType.Binary;
  349. // case OracleType.LongVarBinary : return DbType.Binary;
  350. default : throw ExceptionHelper.InvalidOleDbType((int)oleDbType);
  351. }
  352. }
  353. internal static int OracleTypeToJdbcType(OracleType oleDbType) {
  354. switch(oleDbType) {
  355. case OracleType.BFile : return (int)JavaSqlTypes.BINARY;
  356. case OracleType.Blob : return (int)JavaSqlTypes.BINARY;
  357. case OracleType.Byte : return (int)JavaSqlTypes.TINYINT;
  358. case OracleType.Char : return (int)JavaSqlTypes.CHAR;
  359. case OracleType.Clob : return (int)JavaSqlTypes.CLOB;
  360. case OracleType.Cursor : return (int)JavaSqlTypes.CURSOR;
  361. case OracleType.DateTime : return (int)JavaSqlTypes.TIMESTAMP;
  362. case OracleType.Double : return (int)JavaSqlTypes.DOUBLE;
  363. case OracleType.Float : return (int)JavaSqlTypes.FLOAT;
  364. case OracleType.Int16 : return (int)JavaSqlTypes.SMALLINT;
  365. case OracleType.Int32 : return (int)JavaSqlTypes.INTEGER;
  366. case OracleType.IntervalDayToSecond : return (int)JavaSqlTypes.INTERVALDS;
  367. case OracleType.IntervalYearToMonth : return (int)JavaSqlTypes.INTERVALYM;
  368. case OracleType.LongRaw : return (int)JavaSqlTypes.LONGVARBINARY;
  369. case OracleType.LongVarChar : return (int)JavaSqlTypes.LONGVARCHAR;
  370. case OracleType.NChar : return (int)JavaSqlTypes.CHAR;
  371. case OracleType.NClob : return (int)JavaSqlTypes.CLOB;
  372. case OracleType.Number : return (int)JavaSqlTypes.NUMERIC;
  373. case OracleType.NVarChar : return (int)JavaSqlTypes.VARCHAR;
  374. case OracleType.Raw : return (int)JavaSqlTypes.BINARY;
  375. case OracleType.RowId : return (int)JavaSqlTypes.VARCHAR;
  376. case OracleType.SByte : return (int)JavaSqlTypes.TINYINT;
  377. case OracleType.Timestamp : return (int)JavaSqlTypes.TIMESTAMP;
  378. case OracleType.TimestampLocal : return (int)JavaSqlTypes.TIMESTAMP;
  379. case OracleType.TimestampWithTZ : return (int)JavaSqlTypes.TIMESTAMP;
  380. case OracleType.UInt16 : return (int)JavaSqlTypes.SMALLINT;
  381. case OracleType.UInt32 : return (int)JavaSqlTypes.INTEGER;
  382. case OracleType.VarChar : return (int)JavaSqlTypes.VARCHAR;
  383. // case OracleType.BigInt : return Types.BIGINT;
  384. // case OracleType.Binary : return Types.BINARY;
  385. // case OracleType.Boolean : return Types.BIT;
  386. // case OracleType.BSTR : return Types.VARCHAR;
  387. // case OracleType.Char : return Types.CHAR;
  388. // case OracleType.Currency : return Types.DECIMAL;
  389. // case OracleType.Date : return Types.TIMESTAMP;
  390. // case OracleType.DBDate : return Types.DATE;
  391. // case OracleType.DBTime : return Types.TIME;
  392. // case OracleType.DBTimeStamp : return Types.TIMESTAMP;
  393. // case OracleType.Decimal : return Types.DECIMAL;
  394. // case OracleType.Double : return Types.DOUBLE;
  395. // case OracleType.Empty : return Types.NULL;
  396. // case OracleType.Error : return Types.OTHER;
  397. // case OracleType.Filetime : return Types.TIMESTAMP;
  398. // case OracleType.Guid : return Types.CHAR;
  399. // case OracleType.IDispatch : return Types.OTHER; //throw new ArgumentException("The " + oleDbType + " OracleType value is not supported.");
  400. // case OracleType.Integer : return Types.INTEGER;
  401. // case OracleType.IUnknown : return Types.OTHER; //throw new ArgumentException("The " + oleDbType + " OracleType value is not supported.");
  402. // case OracleType.LongVarBinary : return Types.LONGVARBINARY;
  403. // case OracleType.LongVarChar : return Types.LONGVARCHAR;
  404. // case OracleType.LongVarWChar : return Types.LONGVARCHAR;
  405. // case OracleType.Numeric : return Types.NUMERIC;
  406. // case OracleType.PropVariant : return Types.OTHER;
  407. // case OracleType.Single : return Types.FLOAT;
  408. // case OracleType.SmallInt : return Types.SMALLINT;
  409. // case OracleType.TinyInt : return Types.TINYINT;
  410. // case OracleType.UnsignedBigInt : return Types.BIGINT;
  411. // case OracleType.UnsignedInt : return Types.INTEGER;
  412. // case OracleType.UnsignedSmallInt : return Types.SMALLINT;
  413. // case OracleType.UnsignedTinyInt : return Types.TINYINT;
  414. // case OracleType.VarBinary : return Types.VARBINARY;
  415. // case OracleType.VarChar : return Types.VARCHAR;
  416. // case OracleType.Variant : return Types.VARCHAR;
  417. // case OracleType.VarNumeric : return Types.DECIMAL;
  418. // case OracleType.VarWChar : return Types.VARCHAR;
  419. // case OracleType.WChar : return Types.VARCHAR;
  420. default : throw ExceptionHelper.InvalidOleDbType((int)oleDbType);
  421. }
  422. #endregion // Methods
  423. }
  424. }
  425. }