Има не по-малко от 10 претоварвания на OracleParameterCollection.Add
метод. Изглежда, че случайно сте се обадили на грешния.
Вярвам, че този, който искате, е Add(string, OracleDbType, int, object, ParameterDirection)
, в който случай просто ви липсва стойност за object параметър. Този параметър трябва да съдържа начална стойност за параметъра на Oracle, който използвате. Във вашия случай обаче първоначалната стойност няма значение, тъй като е out параметър. Добавете null след 50 и вашето извикване на съхранена процедура трябва да успее.
Този, който сте извикали, е Add(string, OracleDbType, object, ParameterDirection)
. Размер 50 се интерпретира като начална стойност за параметъра. Не съм сигурен как да тълкувам грешката, която Oracle връща („числова или стойностна грешка“) – това за мен означава, че Oracle се е опитал да преобразува низ в число и не е успял. Може би стойността 50 заменя типа OracleDbType.Varchar2 и така Oracle очаква число, а не низ?
Имаше още няколко проблема, които открих:
- Трябва
command.Parameters["SP_REQ_NUM"]becommand.Parameters["SP_NUM"]? - Вашата съхранена процедура не връща число; извикване на
Convert.ToInt32на низ като201405 001ще се провали.