sql >> Database >  >> RDS >> Oracle

hoe kan ik een parameter gebruiken als varchar2 in oracle?

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"] be command.Parameters["SP_NUM"] ?
  • Uw opgeslagen procedure retourneert geen nummer; Convert.ToInt32 . aanroepen op een string zoals 201405 001 zal mislukken.



  1. MYSQL - waarde toevoegen of invoegen in een kolom, afhankelijk van of deze leeg is of niet

  2. MySQL werkt de hele database bij zonder downtime

  3. NA LOGON (Oracle) trigger in PostgreSQL met extensie – login_hook

  4. Oracle JDeveloper 12c gebruiken met Oracle Database, deel 2