sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo puedo sacar un parámetro como varchar2 en Oracle?

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"] ser command.Parameters["SP_NUM"] ?
  • Su procedimiento almacenado no devuelve un número; llamando a Convert.ToInt32 en una cadena como 201405 001 fallará.