Oracle
 sql >> Database >  >> RDS >> Oracle

come posso estrarre un parametro come varchar2 in Oracle

Ci sono non meno di 10 overload di OracleParameterCollection.Add metodo. Sembra che tu abbia chiamato per sbaglio quello sbagliato.

Credo che quello che desideri sia Add(string, OracleDbType, int, object, ParameterDirection) , nel qual caso ti manca solo un valore per l'object parametro. Questo parametro dovrebbe contenere un valore iniziale per il parametro Oracle in uso. Nel tuo caso, tuttavia, il valore iniziale non ha importanza in quanto è un out parametro. Aggiungi null dopo 50 e la tua chiamata alla procedura memorizzata dovrebbe riuscire.

Quello che hai chiamato è Add(string, OracleDbType, object, ParameterDirection) . La taglia 50 è stato interpretato come un valore iniziale per il parametro. Non sono sicuro di come interpretare l'errore restituito da Oracle ("errore numerico o di valore"), ciò implica per me che Oracle ha tentato di convertire una stringa in un numero e non è riuscito. Forse il valore 50 sovrascrive il tipo OracleDbType.Varchar2 e quindi Oracle si aspetta un numero anziché una stringa?

C'erano un altro paio di problemi che ho riscontrato:

  • Dovrebbe command.Parameters["SP_REQ_NUM"] essere command.Parameters["SP_NUM"] ?
  • La tua procedura memorizzata non restituisce un numero; chiamando Convert.ToInt32 su una stringa come 201405 001 fallirà.