Trả lời câu hỏi của riêng tôi:
Vì vậy, có vẻ như kiểu số Oracle có thể chứa nhiều chữ số thập phân hơn kiểu số thập phân C # và nếu Oracle đang cố gắng trả về nhiều hơn số C # có thể chứa, nó sẽ ném ra InvalidCastException.
Giải pháp?
Trong sql của bạn, hãy làm tròn bất kỳ kết quả nào có thể có quá nhiều chữ số thập phân thành một thứ hợp lý. Vì vậy, tôi đã làm điều này:
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
Và nó đã hoạt động.
Điểm cần lưu ý là:Không tương thích giữa kiểu số Oracle và số thập phân C #. Hạn chế các vị trí thập phân trong Oracle của bạn để tránh các ngoại lệ truyền không hợp lệ.
Hy vọng điều này sẽ giúp ích cho người khác!