Es gibt nicht weniger als 10 Überladungen des <-Codes>OracleParameterCollection.Hinzufügen Methode. Anscheinend hast du versehentlich den falschen angerufen.
Ich glaube, Sie möchten Hinzufügen (String, OracleDbType, Int, Objekt, ParameterDirection)
, in diesem Fall fehlt Ihnen nur ein Wert für das object Parameter. Dieser Parameter sollte einen Anfangswert für den von Ihnen verwendeten Oracle-Parameter enthalten. In Ihrem Fall spielt der Anfangswert jedoch keine Rolle, da es sich um einen out handelt Parameter. Fügen Sie null hinzu nach 50 und Ihr gespeicherter Prozeduraufruf sollte erfolgreich sein.
Der von Ihnen aufgerufene ist Add( Zeichenfolge, OracleDbType, Objekt, ParameterDirection)
. Die Größe 50 wurde als Initialwert für den Parameter interpretiert. Ich bin mir nicht sicher, wie ich den Fehler interpretieren soll, den Oracle zurückgibt ("numerischer oder Wertfehler") - das impliziert für mich, dass Oracle versucht hat, eine Zeichenfolge in eine Zahl umzuwandeln, und fehlgeschlagen ist. Vielleicht der Wert 50 überschreibt den Typ OracleDbType.Varchar2 und Oracle erwartet also eher eine Zahl als einen String?
Es gab noch ein paar andere Probleme, die ich gefunden habe:
- Sollte
command.Parameters["SP_REQ_NUM"]seicommand.Parameters["SP_NUM"]? - Ihre gespeicherte Prozedur gibt keine Zahl zurück; Aufruf von
Convert.ToInt32auf eine Zeichenfolge wie201405 001wird scheitern.