Det finns inte mindre än 10 överbelastningar av OracleParameterCollection.Add metod. Det verkar som att du av misstag har ringt fel.
Jag tror att den du vill ha är Lägg till (sträng, OracleDbType, int, objekt, ParameterDirection)
, i så fall saknar du bara ett värde för objektet parameter. Den här parametern bör innehålla ett initialt värde för den Oracle-parameter du använder. I ditt fall spelar dock startvärdet ingen roll eftersom det är en out parameter. Lägg till null efter 50 och ditt lagrade proceduranrop bör lyckas.
Den du har ringt är Lägg till( sträng, OracleDbType, objekt, ParameterDirection)
. Storleken 50 har tolkats som ett initialt värde för parametern. Jag är inte säker på hur jag ska tolka felet som Oracle returnerar ("numeriskt eller värdefel") – det antyder för mig att Oracle har försökt konvertera en sträng till ett tal och misslyckats. Kanske värdet 50 åsidosätter typen OracleDbType.Varchar2 och så förväntar sig Oracle ett nummer snarare än en sträng?
Jag hittade ytterligare ett par problem:
- Bör
command.Parameters["SP_REQ_NUM"]varacommand.Parameters["SP_NUM"]? - Din lagrade procedur returnerar inte ett nummer; anropar
Convert.ToInt32på en sträng som201405 001kommer att misslyckas.