public override object GetParameterValue(int parameterIndex) { if (((parameters == null) || (parameterIndex < 0)) || (parameterIndex > parameters.Count)) { throw Error.ArgumentOutOfRange("parameterIndex"); } if ((session != null) && !session.IsBuffered) { session.Buffer(); } SqlParameterInfo info = parameters[parameterIndex]; object obj2 = command.Parameters[parameterIndex].Value; if (obj2 == DBNull.Value) { obj2 = null; } if (obj2 != null) { var objType = obj2.GetType(); var ns = objType.Namespace; if (ns == "Oracle.DataAccess.Types") { if (((INullable)obj2).IsNull) { return(null); } var propertyInfo = objType.GetProperty("Value"); if (propertyInfo != null) { obj2 = propertyInfo.GetValue(obj2, null); if (obj2 != null) { objType = obj2.GetType(); } } } if (objType != info.Parameter.ClrType) { return(DBConvert.ChangeType(obj2, info.Parameter.ClrType)); } } return(obj2); }
public virtual object GetParameterValue(int parameterIndex) { if (((parameters == null) || (parameterIndex < 0)) || (parameterIndex > parameters.Count)) { throw Error.ArgumentOutOfRange("parameterIndex"); } if ((session != null) && !session.IsBuffered) { session.Buffer(); } SqlParameterInfo info = parameters[parameterIndex]; object obj2 = command.Parameters[parameterIndex].Value; if (obj2 == DBNull.Value) { obj2 = null; } if ((obj2 != null) && (obj2.GetType() != info.Parameter.ClrType)) { return(DBConvert.ChangeType(obj2, info.Parameter.ClrType)); } return(obj2); }