Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truyền được chỉ định không hợp lệ khi điền DataTable từ OracleDataAdapter.Fill ()

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!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo số 0 đứng đầu trong Oracle

  2. Tạo tất cả các kết hợp có thể có của các chuỗi có độ dài nhất định trong oracle

  3. Làm cách nào để đếm số từ trong một chuỗi trong Oracle?

  4. oracledb chuỗi sql cuộc gọi sử dụng các lời hứa

  5. MySQL tương đương với SEQUENCE.NEXTVAL của Oracle