private int InferSize ()
{
int newSize = 0;
switch (ociType) {
case OciDataType.VarChar2:
case OciDataType.String:
case OciDataType.VarChar:
case OciDataType.Char:
case OciDataType.CharZ:
case OciDataType.OciString:
case OciDataType.Long:
case OciDataType.LongVarChar:
if (sizeManuallySet == true)
return size;
if (value == null || value == DBNull.Value)
newSize = 0;
else
newSize = value.ToString ().Length;
break;
case OciDataType.RowIdDescriptor:
newSize = 10;
break;
case OciDataType.Integer:
case OciDataType.Number:
case OciDataType.Float:
newSize = 22;
break;
case OciDataType.Date:
newSize = 7;
break;
case OciDataType.TimeStamp:
newSize = 11;
break;
case OciDataType.Blob:
case OciDataType.Clob:
case OciDataType.RSet: // REF CURSOR
newSize = -1;
break;
default:
if (value == null || value == DBNull.Value)
newSize = 0;
else
newSize = value.ToString ().Length;
break;
}
sizeSet = true;
return newSize;
}