Отговарям на собствения си въпрос:
Така че изглежда, че числовият тип на Oracle може да съдържа много повече десетични знаци от десетичния тип C# и ако Oracle се опитва да върне повече, отколкото C# може да побере, той хвърля InvalidCastException.
Решение?
Във вашия sql закръглете всички резултати, които може да имат твърде много десетични знаци, до нещо разумно. Така че направих това:
SELECT acct_no, ROUND(market_value/mv_total, 8) -- rounding this division solves the problem
FROM myTable
WHERE NVL(market_value, 0) != 0
AND NVL(mv_total, 0) != 0
И проработи.
Изводът е:Несъвместимост между числовия тип на Oracle и десетичния C#. Ограничете своите десетични знаци на Oracle, за да избегнете невалидните изключения за прехвърляне.
Надявам се това да помогне на някой друг!