Oracle
 sql >> Base de données >  >> RDS >> Oracle

comment puis-je sortir un paramètre en tant que varchar2 dans oracle

Il n'y a pas moins de 10 surcharges du OracleParameterCollection.Add méthode. Il semble que vous ayez accidentellement appelé la mauvaise personne.

Je crois que celui que vous voulez est Add(string, OracleDbType, int, object, ParameterDirection) , auquel cas il vous manque juste une valeur pour le object paramètre. Ce paramètre doit contenir une valeur initiale pour le paramètre Oracle que vous utilisez. Dans votre cas, cependant, la valeur initiale n'a pas d'importance car il s'agit d'un out paramètre. Ajouter null après 50 et votre appel de procédure stockée devrait réussir.

Celui que vous avez appelé est Add(string, OracleDbType, object, ParameterDirection) . La taille 50 a été interprété comme une valeur initiale pour le paramètre. Je ne sais pas comment interpréter l'erreur renvoyée par Oracle ("erreur numérique ou de valeur") - cela implique pour moi qu'Oracle a essayé de convertir une chaîne en nombre et a échoué. Peut-être la valeur 50 remplace le type OracleDbType.Varchar2 et donc Oracle attend un nombre plutôt qu'une chaîne ?

J'ai trouvé d'autres problèmes :

  • Devrait command.Parameters["SP_REQ_NUM"] être command.Parameters["SP_NUM"] ?
  • Votre procédure stockée ne renvoie pas de nombre ; appelant Convert.ToInt32 sur une chaîne telle que 201405 001 échouera.