Mijn eigen vraag beantwoorden:
Het lijkt er dus op dat het Oracle-nummertype veel meer decimalen kan bevatten dan het C#-decimaaltype en als Oracle meer probeert terug te geven dan C# kan bevatten, wordt de InvalidCastException gegenereerd.
Oplossing?
Rond in uw sql alle resultaten met te veel decimalen af op iets zinnigs. Dus ik deed dit:
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
En het werkte.
De take-away is:Incompatibiliteit tussen Oracle-nummertype en C#-decimaal. Beperk uw Oracle-decimaaltekens om de ongeldige cast-uitzonderingen te voorkomen.
Ik hoop dat dit iemand anders helpt!