Похоже, что нет хорошего общего способа сделать это.Для вывода CSV я нашел обходной путь, но не для вывода на экран.
Во время вывода я должен проверить каждое значение для типа OracleNumber (в любом случае я должен проверить на INullable) и привести его соответственно.Тогда есть два варианта:
// Replace: not clean and could be a heavy operation
writer.Write(myOracleNumber.ToString().Replace('.', ','));
или
// Returns decimal but result is not exact (which is acceptable in my case)
writer.Write(OracleNumber.Round(myOracleNumber, 10).Value);
Для вывода на экран мы могли бы использовать аналогичную технику и загрузить новый DataTable в память из того, который был заполнен OracleDataAdapter, нозатем с типами .NET CLR, но поскольку наборы результатов могут быть очень большими, это может быть опасно тяжелым трюком, поэтому мы просто будем жить там с английской нотацией ...