OracleDecimal hat eine größere Genauigkeit als decimal. Aus diesem Grund müssen Sie zuerst die Genauigkeit reduzieren. Vergessen Sie das gesamte Parsing, verwenden Sie die implizite Konvertierung. Versuchen Sie etwas in der Art von (ungetestet):
decimal d = (decimal)(OracleDecimal.SetPrecision(oraReader.GetOracleDecimal(0), 28));