Oracle
 sql >> база данни >  >> RDS >> Oracle

как мога да изведа параметър като varchar2 в oracle

Има не по-малко от 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"] be command.Parameters["SP_NUM"] ?
  • Вашата съхранена процедура не връща число; извикване на Convert.ToInt32 на низ като 201405 001 ще се провали.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORACLE актуализира записи с връзка от 1 към много таблици в тригер

  2. Проблем с променливите за свързване на Oracle, които не използват правилно индекса

  3. Игнориране на заместващата променлива, когато условието не е изпълнено

  4. Забавност на подзаявката на Oracle

  5. Как да зададете незадължително условие OUTER JOIN в Oracle 8i