私自身の質問に答える:
したがって、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#の10進数の間の非互換性。無効なキャスト例外を回避するために、Oracleの小数点以下の桁数を制限してください。
これが他の誰かに役立つことを願っています!