private void SetOracleType (OracleType type, bool inferring)
{
FreeHandle ();
string exception = String.Format ("No mapping exists from OracleType {0} to a known DbType.", type);
switch (type) {
case OracleType.BFile:
case OracleType.Blob:
dbType = DbType.Binary;
ociType = OciDataType.Blob;
break;
case OracleType.LongRaw:
case OracleType.Raw:
dbType = DbType.Binary;
ociType = OciDataType.Raw;
break;
case OracleType.Byte:
dbType = DbType.Byte;
ociType = OciDataType.Number;
break;
case OracleType.Char:
dbType = DbType.AnsiString;
ociType = OciDataType.Char;
break;
case OracleType.Clob:
dbType = DbType.AnsiString;
ociType = OciDataType.Clob;
break;
case OracleType.LongVarChar:
case OracleType.RowId:
case OracleType.VarChar:
dbType = DbType.AnsiString;
ociType = OciDataType.VarChar;
break;
case OracleType.Cursor: // REF CURSOR
ociType = OciDataType.RSet;
dbType = DbType.Object;
break;
case OracleType.IntervalDayToSecond:
dbType = DbType.AnsiStringFixedLength;
ociType = OciDataType.Char;
break;
case OracleType.Timestamp:
case OracleType.TimestampLocal:
case OracleType.TimestampWithTZ:
dbType = DbType.DateTime;
ociType = OciDataType.TimeStamp;
break;
case OracleType.DateTime:
dbType = DbType.DateTime;
ociType = OciDataType.Date;
break;
case OracleType.Double:
dbType = DbType.Double;
ociType = OciDataType.Number;
break;
case OracleType.Float:
dbType = DbType.Single;
ociType = OciDataType.Number;
break;
case OracleType.Int16:
dbType = DbType.Int16;
ociType = OciDataType.Number;
break;
case OracleType.Int32:
case OracleType.IntervalYearToMonth:
dbType = DbType.Int32;
ociType = OciDataType.Number;
break;
case OracleType.NChar:
dbType = DbType.StringFixedLength;
ociType = OciDataType.Char;
break;
case OracleType.NClob:
case OracleType.NVarChar:
dbType = DbType.String;
ociType = OciDataType.Char;
break;
case OracleType.Number:
dbType = DbType.VarNumeric;
ociType = OciDataType.Number;
break;
case OracleType.SByte:
dbType = DbType.SByte;
ociType = OciDataType.Number;
break;
case OracleType.UInt16:
dbType = DbType.UInt16;
ociType = OciDataType.Number;
break;
case OracleType.UInt32:
dbType = DbType.UInt32;
ociType = OciDataType.Number;
break;
default:
throw new ArgumentException (exception);
}
if (!oracleTypeSet || !inferring )
oracleType = type;
}