OracleDecimal memiliki presisi yang lebih besar daripada desimal. Untuk itu, Anda harus mengurangi presisinya terlebih dahulu. Lupakan semua penguraian, gunakan konversi implisit. Cobalah sesuatu seperti (belum diuji):
decimal d = (decimal)(OracleDecimal.SetPrecision(oraReader.GetOracleDecimal(0), 28));