Vấn đề hóa ra không liên quan gì đến các kiểu dữ liệu. Tôi đã sử dụng Int64 trong Tham số Oracle và nó hoạt động, nhưng chỉ sau khi đặt thuộc tính BindByName trên đối tượng Lệnh của tôi thành true.
Rõ ràng là mặc định cho nhà cung cấp .NET System.Data.OracleClient là 'BINDING BY NAME', trong khi mặc định cho Oracle.DataAccess là 'BIND BY POSITION'.
Sẽ thật tuyệt nếu Oracle Exception được bắt sẽ chứa nhiều thông tin hơn, như tham số nào đang ném ngoại lệ. Điều này có thể đã giúp tôi phát hiện ra vấn đề sớm hơn.