Er zijn maar liefst 10 overbelastingen van de OracleParameterCollection.Add
methode. Het lijkt erop dat je per ongeluk de verkeerde hebt gebeld.
Ik denk dat degene die je wilt is Add(string, OracleDbType, int, object, ParameterDirection)
, in welk geval je gewoon een waarde mist voor het object parameter. Deze parameter moet een beginwaarde bevatten voor de Oracle-parameter die u gebruikt. In jouw geval maakt de initiële waarde echter niet uit, want het is een out parameter. Voeg null toe na 50 en uw opgeslagen procedure-aanroep zou moeten slagen.
Degene die je hebt gebeld is Add(string, OracleDbType, object, ParameterDirection)
. De maat 50 is geïnterpreteerd als een initiële waarde voor de parameter. Ik weet niet zeker hoe ik de fout moet interpreteren die Oracle retourneert ("numerieke of waardefout") - dat impliceert voor mij dat Oracle heeft geprobeerd een string naar een getal te converteren en is mislukt. Misschien de waarde 50 overschrijft het type OracleDbType.Varchar2 en dus verwacht Oracle een getal in plaats van een string?
Er waren nog een paar problemen die ik vond:
- Moet
command.Parameters["SP_REQ_NUM"]becommand.Parameters["SP_NUM"]? - Uw opgeslagen procedure retourneert geen nummer;
Convert.ToInt32. aanroepen op een string zoals201405 001zal mislukken.