Hay no menos de 10 sobrecargas del OracleParameterCollection.Add
método. Parece que accidentalmente llamaste al equivocado.
Creo que el que desea es Add(string, OracleDbType, int, object, ParameterDirection)
, en cuyo caso solo falta un valor para el object
parámetro. Este parámetro debe contener un valor inicial para el parámetro de Oracle que está utilizando. En su caso, sin embargo, el valor inicial no importa ya que es un out
parámetro. Añadir null
después de 50
y su llamada al procedimiento almacenado debería tener éxito.
El que ha llamado es Add(string, OracleDbType, object, ParameterDirection)
. El tamaño 50
ha sido interpretado como un valor inicial para el parámetro. No estoy seguro de cómo interpretar el error que devuelve Oracle ("error numérico o de valor"); eso implica para mí que Oracle intentó convertir una cadena en un número y falló. Quizás el valor 50
anula el tipo OracleDbType.Varchar2
y entonces Oracle espera un número en lugar de una cadena?
Hubo otro par de problemas que encontré:
- Debe
command.Parameters["SP_REQ_NUM"]
sercommand.Parameters["SP_NUM"]
? - Su procedimiento almacenado no devuelve un número; llamando a
Convert.ToInt32
en una cadena como201405 001
fallará.