Der er ikke mindre end 10 overbelastninger af OracleParameterCollection.Add metode. Det ser ud til, at du ved et uheld har ringet til den forkerte.
Jeg tror, den du vil have, er Tilføj (streng, OracleDbType, int, objekt, ParameterDirection)
, i hvilket tilfælde du bare mangler en værdi for objektet
parameter. Denne parameter bør indeholde en startværdi for den Oracle-parameter, du bruger. I dit tilfælde er startværdien dog ligegyldig, da det er en out
parameter. Tilføj null
efter 50
og dit lagrede procedurekald skulle lykkes.
Den du har ringet til er Tilføj( streng, OracleDbType, objekt, ParameterDirection)
. Størrelsen 50
er blevet fortolket som en startværdi for parameteren. Jeg er ikke sikker på, hvordan jeg skal fortolke den fejl, som Oracle returnerer ("numerisk eller værdifejl") - det antyder for mig, at Oracle har forsøgt at konvertere en streng til et tal og mislykkedes. Måske værdien 50
tilsidesætter typen OracleDbType.Varchar2
og så forventer Oracle et tal i stedet for en streng?
Der var endnu et par problemer, jeg fandt:
- Skal
command.Parameters["SP_REQ_NUM"]
værecommand.Parameters["SP_NUM"]
? - Din lagrede procedure returnerer ikke et nummer; kalder
Convert.ToInt32
på en streng såsom201405 001
vil mislykkes.