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"]
êtrecommand.Parameters["SP_NUM"]
? - Votre procédure stockée ne renvoie pas de nombre ; appelant
Convert.ToInt32
sur une chaîne telle que201405 001
échouera.