protected override object GetValue(int a, GDADataRecord b, Type c)
        {
                        #if UNMANAGED
            var d = (global::Oracle.DataAccess.Client.OracleDataReader)b.BaseDataRecord;
#elif DEVART
            var d = (Devart.Data.Oracle.OracleDataReader)b.BaseDataRecord;
#else
            var d = (global::Oracle.ManagedDataAccess.Client.OracleDataReader)b.BaseDataRecord;
                        #endif
            var e = a;
            var f = d.GetDataTypeName(e);
            if (f == "Date" && !d.IsDBNull(e))
            {
                return(b.GetDateTime(e));
            }
            else if ((f == "TimeStampTZ" || c == typeof(DateTime)) && !d.IsDBNull(e))
                                #if DEVART
            { return(d.GetOracleTimeStamp(e).ToDateTimeOffset()); }
#else
            { return(d.GetOracleTimeStampTZ(e).ToDateTimeOffset()); }
                        #endif
            return(b [e].GetValue());
        }
        /// <summary>
        /// Recupera valor do dataRecord.
        /// </summary>
        /// <param name="ordinal">Posição ordinal do campo que será recuperado.</param>
        /// <param name="fieldType">Tipo do campo.</param>
        /// <param name="dataRecord">Objeto dataRecord sobre qual será recuperado.</param>
        protected override object GetValue(int ordinal, GDADataRecord dataRecord, Type fieldType)
        {
                        #if UNMANAGED
            var dataReader = (global::Oracle.DataAccess.Client.OracleDataReader)dataRecord.BaseDataRecord;
#elif DEVART
            var dataReader = (Devart.Data.Oracle.OracleDataReader)dataRecord.BaseDataRecord;
#else
            var dataReader = (global::Oracle.ManagedDataAccess.Client.OracleDataReader)dataRecord.BaseDataRecord;
                        #endif
            var fieldIndex = ordinal;
            var dataType   = dataReader.GetDataTypeName(fieldIndex);
            if (dataType == "Date" && !dataReader.IsDBNull(fieldIndex))
            {
                return(dataRecord.GetDateTime(fieldIndex));
            }
            else if ((dataType == "TimeStampTZ" || fieldType == typeof(DateTime)) && !dataReader.IsDBNull(fieldIndex))
                                #if DEVART
            { return(dataReader.GetOracleTimeStamp(fieldIndex).ToDateTimeOffset()); }
#else
            { return(dataReader.GetOracleTimeStampTZ(fieldIndex).ToDateTimeOffset()); }
                        #endif
            return(dataRecord[fieldIndex].GetValue());
        }