There seems to be no good general way to do this. For CSV output, I found a workaround, but not for screen output.
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, , , , ...