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.ToInt32
auf eine Zeichenfolge wie201405 001
wird scheitern.