Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

como posso definir um parâmetro como varchar2 no oracle


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"] be command.Parameters["SP_NUM"] ?
  • Seu procedimento armazenado não retorna um número; chamando Convert.ToInt32 em uma string como 201405 001 falhará.