Có không ít hơn 10 lần quá tải OracleParameterCollection.Add
phương pháp. Có vẻ như bạn đã vô tình gọi nhầm.
Tôi tin rằng người bạn muốn là Add(string, OracleDbType, int, object, ParameterDirection)
, trong trường hợp đó, bạn chỉ thiếu một giá trị cho đối tượng object tham số. Tham số này phải chứa giá trị ban đầu cho tham số Oracle mà bạn đang sử dụng. Tuy nhiên, trong trường hợp của bạn, giá trị ban đầu không quan trọng vì nó là out tham số. Thêm null sau 50 và lệnh gọi thủ tục được lưu trữ của bạn sẽ thành công.
Người bạn đã gọi là Add(string, OracleDbType, object, ParameterDirection)
. Kích thước 50 đã được hiểu là một giá trị ban đầu cho tham số. Tôi không chắc làm thế nào để diễn giải lỗi mà Oracle trả về ("lỗi số hoặc giá trị") - điều đó ngụ ý với tôi rằng Oracle đã cố gắng chuyển đổi một chuỗi thành một số và không thành công. Có lẽ giá trị 50 ghi đè kiểu OracleDbType.Varchar2 và vì vậy Oracle mong đợi một số hơn là một chuỗi?
Có một số vấn đề khác mà tôi phát hiện:
- Nên
command.Parameters["SP_REQ_NUM"]becommand.Parameters["SP_NUM"]? - Thủ tục đã lưu trữ của bạn không trả về một số; gọi
Convert.ToInt32trên một chuỗi chẳng hạn như201405 001sẽ thất bại.