Não há menos de 10 sobrecargas do
OracleParameterCollection.Add
método. Parece que você ligou acidentalmente para a pessoa errada. Acho que o que você quer é
Add(string, OracleDbType, int, object, ParameterDirection)
, nesse caso você está apenas perdendo um valor para o object
parâmetro. Esse parâmetro deve conter um valor inicial para o parâmetro Oracle que você está usando. No seu caso, no entanto, o valor inicial não importa, pois é um out
parâmetro. Adicionar null
após 50
e sua chamada de procedimento armazenado deve ser bem-sucedida. O que você chamou é
Add(string, OracleDbType, object, ParameterDirection)
. O tamanho 50
foi interpretado como um valor inicial para o parâmetro. Não tenho certeza de como interpretar o erro que o Oracle retorna ("erro numérico ou de valor") - isso implica para mim que o Oracle tentou converter uma string em um número e falhou. Talvez o valor 50
substitui o tipo OracleDbType.Varchar2
e assim o Oracle espera um número em vez de uma string? Houve outro par de problemas que encontrei:
- Deve
command.Parameters["SP_REQ_NUM"]
becommand.Parameters["SP_NUM"]
? - Seu procedimento armazenado não retorna um número; chamando
Convert.ToInt32
em uma string como201405 001
falhará.