internal object GetOutputValue(NativeBuffer parameterBuffer, OracleConnection connection, bool needCLSType) { object obj2; if (parameterBuffer.ReadInt16(this._indicatorOffset) == -1) { return DBNull.Value; } switch (this._bindingMetaType.OciType) { case OCI.DATATYPE.VARCHAR2: case OCI.DATATYPE.LONG: case OCI.DATATYPE.LONGVARCHAR: case OCI.DATATYPE.CHAR: { obj2 = new OracleString(parameterBuffer, this._valueOffset, this._lengthOffset, this._bindingMetaType, connection, this._bindAsUCS2, true); int size = this._parameter.Size; if (size != 0) { OracleString str4 = (OracleString) obj2; if (size < str4.Length) { OracleString str3 = (OracleString) obj2; string s = str3.Value.Substring(0, size); if (needCLSType) { return s; } return new OracleString(s); } } if (needCLSType) { OracleString str2 = (OracleString) obj2; obj2 = str2.Value; } return obj2; } case OCI.DATATYPE.INTEGER: case OCI.DATATYPE.FLOAT: case OCI.DATATYPE.UNSIGNEDINT: return parameterBuffer.PtrToStructure(this._valueOffset, this._bindingMetaType.BaseType); case OCI.DATATYPE.VARNUM: obj2 = new OracleNumber(parameterBuffer, this._valueOffset); if (needCLSType) { OracleNumber number = (OracleNumber) obj2; obj2 = number.Value; } return obj2; case OCI.DATATYPE.DATE: obj2 = new OracleDateTime(parameterBuffer, this._valueOffset, this._lengthOffset, this._bindingMetaType, connection); if (needCLSType) { OracleDateTime time2 = (OracleDateTime) obj2; obj2 = time2.Value; } return obj2; case OCI.DATATYPE.RAW: case OCI.DATATYPE.LONGRAW: case OCI.DATATYPE.LONGVARRAW: obj2 = new OracleBinary(parameterBuffer, this._valueOffset, this._lengthOffset, this._bindingMetaType); if (needCLSType) { OracleBinary binary = (OracleBinary) obj2; obj2 = binary.Value; } return obj2; case OCI.DATATYPE.CLOB: case OCI.DATATYPE.BLOB: return new OracleLob(this._locator); case OCI.DATATYPE.BFILE: return new OracleBFile(this._locator); case OCI.DATATYPE.RSET: return new OracleDataReader(connection, this._descriptor); case OCI.DATATYPE.INT_TIMESTAMP: case OCI.DATATYPE.INT_TIMESTAMP_TZ: case OCI.DATATYPE.INT_TIMESTAMP_LTZ: obj2 = new OracleDateTime(this._dateTimeDescriptor, this._bindingMetaType, connection); if (needCLSType) { OracleDateTime time = (OracleDateTime) obj2; obj2 = time.Value; } return obj2; case OCI.DATATYPE.INT_INTERVAL_YM: obj2 = new OracleMonthSpan(parameterBuffer, this._valueOffset); if (needCLSType) { OracleMonthSpan span2 = (OracleMonthSpan) obj2; obj2 = span2.Value; } return obj2; case OCI.DATATYPE.INT_INTERVAL_DS: obj2 = new OracleTimeSpan(parameterBuffer, this._valueOffset); if (needCLSType) { OracleTimeSpan span = (OracleTimeSpan) obj2; obj2 = span.Value; } return obj2; } throw System.Data.Common.ADP.TypeNotSupported(this._bindingMetaType.OciType); }
internal object GetOutputValue(NativeBuffer parameterBuffer, OracleConnection connection, bool needCLSType) { object obj2; if (parameterBuffer.ReadInt16(this._indicatorOffset) == -1) { return(DBNull.Value); } switch (this._bindingMetaType.OciType) { case OCI.DATATYPE.VARCHAR2: case OCI.DATATYPE.LONG: case OCI.DATATYPE.LONGVARCHAR: case OCI.DATATYPE.CHAR: { obj2 = new OracleString(parameterBuffer, this._valueOffset, this._lengthOffset, this._bindingMetaType, connection, this._bindAsUCS2, true); int size = this._parameter.Size; if (size != 0) { OracleString str4 = (OracleString)obj2; if (size < str4.Length) { OracleString str3 = (OracleString)obj2; string s = str3.Value.Substring(0, size); if (needCLSType) { return(s); } return(new OracleString(s)); } } if (needCLSType) { OracleString str2 = (OracleString)obj2; obj2 = str2.Value; } return(obj2); } case OCI.DATATYPE.INTEGER: case OCI.DATATYPE.FLOAT: case OCI.DATATYPE.UNSIGNEDINT: return(parameterBuffer.PtrToStructure(this._valueOffset, this._bindingMetaType.BaseType)); case OCI.DATATYPE.VARNUM: obj2 = new OracleNumber(parameterBuffer, this._valueOffset); if (needCLSType) { OracleNumber number = (OracleNumber)obj2; obj2 = number.Value; } return(obj2); case OCI.DATATYPE.DATE: obj2 = new OracleDateTime(parameterBuffer, this._valueOffset, this._lengthOffset, this._bindingMetaType, connection); if (needCLSType) { OracleDateTime time2 = (OracleDateTime)obj2; obj2 = time2.Value; } return(obj2); case OCI.DATATYPE.RAW: case OCI.DATATYPE.LONGRAW: case OCI.DATATYPE.LONGVARRAW: obj2 = new OracleBinary(parameterBuffer, this._valueOffset, this._lengthOffset, this._bindingMetaType); if (needCLSType) { OracleBinary binary = (OracleBinary)obj2; obj2 = binary.Value; } return(obj2); case OCI.DATATYPE.CLOB: case OCI.DATATYPE.BLOB: return(new OracleLob(this._locator)); case OCI.DATATYPE.BFILE: return(new OracleBFile(this._locator)); case OCI.DATATYPE.RSET: return(new OracleDataReader(connection, this._descriptor)); case OCI.DATATYPE.INT_TIMESTAMP: case OCI.DATATYPE.INT_TIMESTAMP_TZ: case OCI.DATATYPE.INT_TIMESTAMP_LTZ: obj2 = new OracleDateTime(this._dateTimeDescriptor, this._bindingMetaType, connection); if (needCLSType) { OracleDateTime time = (OracleDateTime)obj2; obj2 = time.Value; } return(obj2); case OCI.DATATYPE.INT_INTERVAL_YM: obj2 = new OracleMonthSpan(parameterBuffer, this._valueOffset); if (needCLSType) { OracleMonthSpan span2 = (OracleMonthSpan)obj2; obj2 = span2.Value; } return(obj2); case OCI.DATATYPE.INT_INTERVAL_DS: obj2 = new OracleTimeSpan(parameterBuffer, this._valueOffset); if (needCLSType) { OracleTimeSpan span = (OracleTimeSpan)obj2; obj2 = span.Value; } return(obj2); } throw System.Data.Common.ADP.TypeNotSupported(this._bindingMetaType.OciType); }