Има не по-малко от 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
ще се провали.