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.ToInt32
på en sträng som201405 001
kommer att misslyckas.