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.ToInt32
trên một chuỗi chẳng hạn như201405 001
sẽ thất bại.