sql >> Database teknologi >  >> RDS >> Oracle

hvordan kan jeg udlede en parameter som varchar2 i oracle

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ære command.Parameters["SP_NUM"] ?
  • Din lagrede procedure returnerer ikke et nummer; kalder Convert.ToInt32 på en streng såsom 201405 001 vil mislykkes.



  1. Begivenheder og tråde i .NET

  2. tjek for duplikerede data før indsættelse

  3. Sådan installeres PgBackRest

  4. mysql erstatte til alternativ