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.ToInt32em uma string como201405 001falhará.